作为我正在进行的项目的一部分,我需要在 C# 代码中使用 AES 加密一些数据,并在 Java 中解密。由于安全性不是首要任务(这只是概念证明),我们可以将 key 作为某个类的属性存储在代码中。
接下来的问题是:由于 java 和 C# 字节不同,我如何以可剪切粘贴的方式存储两种语言的 key ?
这就是我现在的做法:
Java:
// aesKeyBytes.length = 32
private static byte[] aesKeyBytes = new byte[]{ 5, -67, 39 ... ,57, 120 }
C#:
private static byte[] KeyBytes() {
var sbytes = new sbyte[] { 5, -67, 39 ... ,57, 120 }
};
return = sbytes
.Select(sb => unchecked((byte) sb))
.ToArray();
}
这是正确的方法吗? sbyte 在语义上与 Java 字节相同吗?未经检查的 sbyte 转换是否会为我的 key 获得正确的相应字节?
最佳答案
我会选择让源包含 key 的 base64 版本,然后使用 Convert.FromBase64String
(C#) 以及它的 Java 等效项(尽管 according to this 标准库中没有一个...)来获取字节数组。
关于c# - 如何以 "cut-n-paste-able"的方式在 C# 和 Java 中定义 AES key (字节数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6098868/