为啥使用 Convert.FromBase64String(...) 将字符串转换为 byte[] 时,我不能放两个相同的字符? [复制]
Posted
技术标签:
【中文标题】为啥使用 Convert.FromBase64String(...) 将字符串转换为 byte[] 时,我不能放两个相同的字符? [复制]【英文标题】:Why when converting string to byte[] using Convert.FromBase64String(...) i can't put two same characters? [duplicate]为什么使用 Convert.FromBase64String(...) 将字符串转换为 byte[] 时,我不能放两个相同的字符? [复制] 【发布时间】:2022-01-09 23:54:45 【问题描述】:为什么在使用 Convert.FromBase64String(...) 将字符串转换为 byte[] 时,我不能输入两个相同的字符?
例如我有
class User
public string Login get; set;
public byte[] Password get; set;
class Program
static void Main(string[] args)
var login = Console.ReadLine();
var password = Console.ReadLine();
var bytePass = Convert.FromBase64String(password);
var user = new User() Login = login, Password = bytePass ;
当我用两个相同的字符(例如“testt”)作为密码字符串时,它会抛出异常
System.FormatException:“输入不是有效的 Base-64 字符串,因为它包含非 base-64 字符、两个以上的填充字符或填充字符中的非法字符。”
如果我想将多个相同字符的字符串转换为字节[],我应该怎么做?有没有可能?
【问题讨论】:
您使用的是FromBase64String
,因此密码应该是base64strin
而不是testt
Convert.FromBase64String(...) 将 base64 编码的字符串转换为字节数组。您的输入字符串不是 base64 编码的,这就是您收到此错误的原因。你能解释一下你想要做什么吗?为什么要使用 Convert.FromBase64String(...)?
@Alen.Toma 那么,有没有一种方法可以做到这一点?
@Chetan 试图将字符串值转换为 byte[] 值
请告诉我你不会在没有散列和加盐的情况下存储密码?
【参考方案1】:
字符串testt
不是a Base64-encoded string。 Base64 字符串的长度必须是四的倍数。
要将常规字符串转换为字节序列,请使用the Encoding.GetBytes
method。
【讨论】:
以上是关于为啥使用 Convert.FromBase64String(...) 将字符串转换为 byte[] 时,我不能放两个相同的字符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章