c# - 如何以 "cut-n-paste-able"的方式在 C# 和 Java 中定义 AES key (字节数组)

标签 c# java cryptography types

作为我正在进行的项目的一部分,我需要在 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/

相关文章:

c# - 插入链接表而不先获取

c# - 我如何通过 Linq 实现它?

java 。如何从 URL 获取所有参数,但仅此而已

java - 使用 ImageJ 显示 dicom 图像的矢状面和冠状面 View

java - c# RSA 使用私钥加密

c - 使用 libgcrypt 从密码加密文件

c# - 公共(public)类扩展内部类

java - DefaultTableModel 上的 "Super"和 "this"

java - Android 中的 Diffie Hellman key 交换

c# - 如何渲染网站的预览图像?