AES128_CBC_NoPading加密、sha256withRSA签名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AES128_CBC_NoPading加密、sha256withRSA签名相关的知识,希望对你有一定的参考价值。

参考技术A AES加密中重要的两个参数KEY、IV且都是16位数字,我这里将IV默认为16个0
加密的数据data长度必须是16的倍数,否则会加密失败,加密前需要检查是否补0处理
主要用到的函数 CCCrypt:

解密先需要将字符串通过base64解码转为NSData后进行 AES128解密
sha256withRSA签名
RSA签名需要Mac端生成公钥和私钥,由于我们项目是后台申请的给了公钥私钥字符串,所以是通过字符串转成SecKeyRef格式。

主要用到的函数SecKeyRawSign

一般客户端只用来对数据加签,后台验签。
frameworkDemo地址
最近项目用到了,看了很多文章才搞出来,有不对的请指正,谢谢!

SHA 和 AES 加密有啥区别? [关闭]

【中文标题】SHA 和 AES 加密有啥区别? [关闭]【英文标题】:What's the difference between SHA and AES encryption? [closed]SHA 和 AES 加密有什么区别? [关闭] 【发布时间】:2010-11-02 16:56:43 【问题描述】:

SHA 和 AES 加密有什么区别?

【问题讨论】:

更适合security.stackexchange.com。 【参考方案1】:

SHA 不是加密,它是一种单向哈希函数。 AES (Advanced_Encryption_Standard) 是一种对称加密标准。

AES Reference

【讨论】:

【参考方案2】:

SHA 代表安全散列算法,而 AES 代表高级加密标准。所以 SHA 是一套散列算法。另一方面,AES是一种用于加密的密码。 SHA 算法(SHA-1、SHA-256 等)将接受输入并产生摘要(哈希),这通常用于数字签名过程(产生一些字节的哈希并使用私钥签名) .

【讨论】:

【参考方案3】:

SHA 是由国家安全局开发的“安全哈希算法”系列。目前有几十个选项在竞争谁将成为SHA-3,这是 2012+ 的新哈希算法。

您使用 SHA 函数获取大型文档并计算输入的“摘要”(也称为“哈希”)。重要的是要认识到这是一个单向过程。您无法获取摘要并恢复原始文档。

AES,高级加密标准是一种对称块算法。这意味着它需要 16 个字节的块并对其进行加密。它是“对称的”,因为密钥允许加密和解密。

更新:Keccak 于 2012 年 10 月 2 日被评为 SHA-3 获胜者。

【讨论】:

【参考方案4】:

SHA 是哈希函数,AES 是加密标准。给定一个输入,您可以使用 SHA 生成一个输出,该输出不太可能从任何其他输入生成。此外,在应用该函数时会丢失一些信息,因此即使您知道如何生成产生相同输出的输入,该输入也不太可能与最初使用的输入相同。 另一方面,AES 旨在防止在共享相同加密密钥的两方之间发送的任何数据泄露给第三方。这意味着一旦您知道加密密钥和输出(以及 IV...),您就可以无缝地返回原始输入。 请注意,SHA 只需要应用输入即可,而 AES 至少需要 3 项:您要加密/解密的内容、加密密钥和初始化向量 (IV)。

【讨论】:

【参考方案5】:

SHA 和 AES 有不同的用途。 SHA 用于生成数据哈希,AES 用于加密数据。

以下是 SHA 哈希对您有用的示例。假设您想下载某个 Linux 发行版的 DVD ISO 映像。这是一个大文件,有时会出错 - 所以您想验证您下载的内容是否正确。您要做的是转到受信任的来源(例如官方发行版下载点),它们通常具有可用的 ISO 映像的 SHA 哈希。您现在可以为下载的数据生成可比较的 SHA 哈希(使用任意数量的开放工具)。您现在可以比较两个哈希值以确保它们匹配 - 这将验证您下载的图像是否正确。如果您从不受信任的来源(例如 torrent)获取 ISO 映像,或者您在使用 ISO 时遇到问题并想检查映像是否已损坏,这一点尤其重要。

正如您在本例中看到的,SHA 用于验证未损坏的数据。您有权查看 ISO 中的数据。

另一方面,AES 用于加密数据,或防止人们在知道某些秘密的情况下查看该数据。

AES 使用共享密钥,这意味着用于加密数据的密钥(或相关密钥)与用于解密数据的密钥相同。例如,如果我使用 AES 加密了一封电子邮件并将该电子邮件发送给您,那么您和我都需要知道用于加密和解密电子邮件的共享密钥。这与使用 PGP 或 SSL 等公钥的算法不同。

如果您想将它们放在一起,您可以使用 AES 对消息进行加密,然后将未加密消息的 SHA1 哈希发送出去,这样当消息被解密时,他们就能够验证数据。这是一个有点做作的例子。

如果您想了解更多有关这些***搜索词(AES 和 SHA 之外)的信息,您想尝试包括:

对称密钥算法(用于 AES) 加密哈希函数(用于 SHA) 公钥加密(用于 PGP 和 SSL)

【讨论】:

【参考方案6】:

SHA 不需要任何东西,只需要应用输入,而 AES 至少需要 3 件事 - 您要加密/解密的内容、加密密钥和初始化向量。

【讨论】:

[这被标记为“新用户提供的旧问题的迟到答案。我的评论是在这种情况下。]这似乎没有添加任何关于已提供内容的信息这个问题的其他答案。 那是错误的。您不需要初始化向量 (IV) 即可使用 AES。 AES 的某些操作模式需要 IV(这是完全不同的)。

以上是关于AES128_CBC_NoPading加密、sha256withRSA签名的主要内容,如果未能解决你的问题,请参考以下文章

在 Websphere 应用程序服务器中添加了密码 SSL_RSA_WITH_AES_128_GCM_SHA256 但它在日志中不可见并且正在发生握手异常

AES128-ECB对文件进行加密解密验证

是否可以在TLSv1.2会话中使用TLSv1.3密码?

SSH&SSL弱加密算法漏洞修复

OpenSSL AES_cfb128_encrypt C++

SSH&SSL弱加密算法漏洞修复