gpt4 book ai didi

java - iOS 中的 AES key 生成不同于 JAVA

转载 作者:行者123 更新时间:2023-11-28 19:53:58 24 4
gpt4 key购买 nike

为了在 java 中生成 AES key ,我曾将其用作休闲

public byte[] GenerateAESKey() {
// Generate a new AES key
SecretKey key = null;
try {
KeyGenerator keygen = KeyGenerator.getInstance("AES");
keygen.init(128);
key = keygen.generateKey();
return key.getEncoded();
} catch (NoSuchAlgorithmException e) {
return null;
}
}

在 iOS 中,我使用 iOS-Crypto-API. 以这种方式进行了尝试

 id<SecretKey> key=[[[AESKeyGenerator alloc] init] generate:128 onError:&error];
NSLog(@"Key: %@ ",key.key);

当我打印两个 key 时,它们看起来不同,上面生成的 iOS key 是否正确?帮我解决这个问题。

最佳答案

AES key 本质上是位串。因此,当您生成新的 AES key 时,它将使用系统或库的一些随机性来创建。即使您在同一个库中生成两个 key ,它们也会不同,因为 128 位 key 的冲突确实不太可能发生。

对于加密和解密,两端需要相同的 key ,因此需要以某种方式传输它。根据您的系统,您可以在系统设置时执行此操作( key 嵌入在源代码中或以某种方式静态)或使用非对称加密将 key 从一台机器发送到另一台机器(可能使用 Diffie-Hellman key 交换进行保护)。

您必须以图书馆可接受的某种方式对 key 进行编码。流行的编码是 Base 64 和 Hex。您可能需要在编码之间进行转换。

关于java - iOS 中的 AES key 生成不同于 JAVA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27547263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com