iOS SHA256加密 RSA公钥加密

这两天公司有这样两个需求,一个是从前端(h5)交互,获取到一个字符串,要求对这个字符串进行,SHA256计算摘要(也相当于加密),之后得到的是uint8_t类型的字节数组,然后对字节数组进行RSA公钥加密。在base64编码,返回给前端(h5 ios也是前端),最终数据还是给后台。另一个需求就是---公钥验签,就是后台给了txt文件,里面有加签和加密过的文本字符串,需要把这个文本字符串处理下,和原来数据验签,看看是不是被修改过。

1.需求一:获取去字符串----SHA256计算摘要----RSA加密---base64编码。

哈希值用作表示大量数据的固定大小的唯一值。数据的少量更改会在哈希值中产生不可预知的大量更改。所以为啥要SHA256。

SHA256的时候遇到一个坑,后台要的数据是SHA256之后的字节数组。网上大部分SHA256之后都是字符串,菜鸟,之前没了解过字节数组。

#import <CommonCrypto/CommonDigest.h>
#import <CommonCrypto/CommonHMAC.h>


- (NSData *)sha256:(NSString *)shaStr {
    NSData *data = [shaStr dataUsingEncoding:NSUTF8StringEncoding];
    uint8_t digest[CC_SHA256_DIGEST_LENGTH];
    CC_SHA256(data.bytes, (CC_LONG)data.length, digest);
    NSData *adata = [[NSData alloc] initWithBytes:digest length:CC_SHA256_DIGEST_L
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年发明。在Python中,我们可以使用内置库`cryptography`或第三方库`pycryptodome`来实现RSA公钥加密。 **RSA原理概述:** 1. **密钥生成**:RSA算法基于大数分解难题,它包含一对密钥,即公钥和私钥。公钥用于加密,而私钥用于解密。 2. **加密过程**:发送方使用接收方的公钥对明文进行加密,接收方无法用公钥直接解密。 3. **解密过程**:只有拥有私钥的人才能解密使用公钥加密的信息。 **Python实现示例(使用cryptography库):** ```python from cryptography.hazmat.primitives.asymmetric import rsa from cryptography.hazmat.primitives import serialization, hashes from cryptography.hazmat.primitives.asymmetric import padding # 生成RSA密钥对 key_pair = rsa.generate_private_key(public_exponent=65537, key_size=2048) # 公钥和私钥 public_key = key_pair.public_key() private_key = key_pair # 加密数据 message = b'Secret message' ciphertext = public_key.encrypt( message, padding.OAEP( mgf=padding.MGF1(algorithm=hashes.SHA256()), algorithm=hashes.SHA256(), label=None ) ) # 解密数据 plaintext = private_key.decrypt(ciphertext) ``` **相关问题--:** 1. RSA算法的安全基础是什么? 2. 如何确保使用Python RSA加密的数据只可由拥有正确私钥的人解密? 3. `cryptography`库中的`OAEP`和`MGF1`分别代表什么? 4. 如果丢失了RSA的私钥,如何安全地生成新的私钥对?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值