当前位置: 首页 > 知识库问答 >
问题:

如何从NSData生成对称AES密钥?

令狐昂雄
2023-03-14

我需要从NSData值生成对称AES密钥,该值创建如下:

let decodedData = NSData(base64EncodedString: initKey, options: NSDataBase64DecodingOptions(rawValue: 0))

(initKey是base64字符串值。)

问题是如何从“解码数据”中生成密钥?(类似于Android秘书KeySpec)

(我使用的是Swift 2.2)

这里是场景(在Android):

1-我有一个bas64字符串。

2-我将其解码为字节数组。

3-然后根据字节数组长度和AES类型创建secretkey。

4-最后定义一个基于secretkey的AES密码,对一些字符串进行编码。

谢谢你的帮助

共有1个答案

郎和通
2023-03-14

AES密钥只是16或32字节的随机数据。他们没有结构。如果是正确的长度,你已经有一把钥匙了。如果你所说的秘书密码是指“使用PBE”(基于密码的加密),那么它完全取决于传递给秘书密码的参数如何用公钥重新创建它。AES加密没有通用的标准格式。您必须复制加密器正在做的任何事情。所以如果你想匹配它,你需要准确地解释正在做什么。

感谢@rob-纳皮尔

 类似资料:
  • 我正在尝试用Java编写一个简单的密码管理器。我想用AES 256位加密用存储的密码加密文件。此外,我希望用户能够解密的文件与密码。当阅读其他在线帖子时,他们几乎都强调简单地使用密码作为密钥是不安全的,他们提到使用随机盐来增加安全性。但我不明白如何在生成密钥时使用随机盐。如果我从用户的密码和随机的salt创建密钥,那么当他们试图解密他们的文件时,我怎么知道salt是什么呢?这让我完全糊涂了。 目前

  • 我不是openssl的专家。我把下面的代码放在一起,使用AES-CTR加密和解密消息。输出不是我期望看到的。 我得到的结果是这样的:“简单:、u∩U└■我的 知道是什么导致的吗?我想做的就是使用AES使用CTR来加密和解密消息。我想得到与纯文本相同的加密长度(或1字节)。我用DES做过这个,但是DES不安全。然后,我将使用AES-CTR加密和解密我的流量(流)。

  • 如果我尝试使用OpenSSL命令行生成3TDES加密的PKCS 8密钥: 我得到: PKCS8 RFC没有说明必须使用哪种算法来创建密钥块。它确实给出了PKCS5算法作为例子。有没有办法使用OpenSSL创建一个由DES密钥加密的PKCS8密钥?如果不是,它是OpenSSL不支持的还是一个非常不标准的事情? 下面是通过OpenSSL命令行(密码测试)使用基于密码的加密创建的示例: 这里是我手工制作

  • 我正在开发一个功能,需要Aes加密(Aes/CBC/PKCS5Padding)密码文本从客户端发送到后端有ASP.NET的服务器。 我在服务器端有一个解密功能如下: 我包含了用于SHA-256和AES密码计算的CryptoJS库。下面是我实现的代码。 问题是,编码后的字符串不能解密回其以前的形式。我认为客户端的加密逻辑和服务器端的解密逻辑存在一定的不匹配。 当我将CryptoJS加密密码传递给ja

  • 我使用Laravel 5.7,并在不同的服务器上运行两个应用程序。我想通过加密进行通信。所以两端都需要有一定的键。默认的 laravel加密设置为 AES-256-CBC。 所以我想,我需要一个32字节的密钥,就像这样: $ key = bin 2 hex(OpenSSL _ random _ pseudo _ bytes(32,$ c strong)); 我得到一个64长的十六进制字符串,我想保

  • 我有两个应用程序使用Thrift进行交互。他们共享相同的密钥,我需要加密他们的消息。使用对称算法(例如AES)是有意义的,但我还没有找到任何库来实现这一点。因此,我做了一项研究,并看到以下选项: 我可以使用内置的SSL支持,建立安全连接,并使用我的密钥作为身份验证令牌。它需要安装证书除了他们已经有的秘密密钥,但我不需要实现任何东西,除了检查从客户端接收的秘密密钥与本地存储的秘密密钥相同。 到目前为