cof*_*eak 2 c# encryption cryptography aes
我正在实现自己的 AES 代码,在解密过程中遇到一些问题。
byte[] output;
output = Encrypt(EncryptBufferInput);//encrypt "12",output[] is 300532188151293E4ACA3BA529B821C1
str.Append(Encoding.ASCII.GetString(output) );
output = Decrypt(DecryptBufferInput);//in hex, DecryptBufferInput should be "300532188151293E4ACA3BA529B821C1"
str.Append(Encoding.ASCII.GetString(output));//does not decrypt back to "12"
Run Code Online (Sandbox Code Playgroud)
因此,如果我尝试加密“12”,它会给出十六进制形式的“300532188151293E4ACA3BA529B821C1”值。当我尝试将其解密回“12”时,它给了我一个错误的值,因为 DecryptBufferInput 不是“300532188151293E4ACA3BA529B821C1”,而是其他一些值......只有前几个值是相同的。EncryptBufferInput 和 DecryptBufferInput 都是 byte[] 数组,我使用 Encoding.ASCII.GetBytes(string) 用相应的字符串(要加密的字符串或要解密的字符串)填充字节数组。我究竟做错了什么??
您获得的二进制文件Encrypt不代表文本数据,因此您不应使用Encoding. 使用Convert.ToBase64String和 来Convert.FromBase64String代替它。也可以看看。
在解码步骤中,需要颠倒顺序;所以:如果您接受字符串输入,您将需要:
加密:
"12"Encoding(最好Encoding.UTF8)得到byte[]加密Encrypt与未加密的一起使用byte[]以获得加密的byte[]Convert.ToBase64String其表示为字符串解密:
Convert.FromBase64String获取加密的byte[]Decrypt与加密的一起使用byte[]以获得未加密的byte[]Encoding来获取字符串"12"