RSA签名认证

作者: AKyS佐毅 | 来源:发表于2016-04-21 21:38 被阅读1574次
网络安全.png

RSA可汗学院第一章 RSA加密

RSA加密原理第一章

RSA加密原理第二章

RSA: 
1. 加签:用私钥加签,对方用公钥验签(防抵赖,私钥只有自己有!) 
2. 加密:用对方公钥加密,对方用对应私钥解密(加密) 

 RSA使用“密钥对”对数据进行加密解密,在加密解密前需要先生存公钥(Public Key)和私钥(Private Key)。
 公钥(Public key): 用于加密数据. 用于公开, 一般存放在数据提供方, 例如iOS客户端。
 私钥(Private key): 用于解密数据. 必须保密, 私钥泄露会造成安全问题。

如何生成RSA公钥私钥

RSA证书.png

生成类似支付宝的1024位私钥

  openssl genrsa -out private_key.em 1024

生成certification require file

 openssl req -new -key private_key.pem -out rsaCertReq.csr

CSR文件必须有CA的签名才可形成证书 并指定过期时间

openssl x509 -req -days 365 -in rsaCertReq.csr -signkey private_key.pem -out     rsaCert.crt

生成公钥供iOS使用

openssl x509 -outform der -in rsaCert.crt -out public_key.der

生成pkcs12文件,但不包含CA证书.生成私钥供iOS使用

openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt

生成pem结尾的公钥供Java使用

openssl rsa -in private_key.pem -out rsa_public_key.pem -pubout

生成pem结尾的私钥供Java使用

openssl pkcs8 -topk8 -in private_key.pem -out pkcs8_private_key.pem -nocrypt

RSA签名

- (void)RSA{
_rsa = [XYRSACryption new];
// 加载公钥
NSString *derPath = [[NSBundle bundleForClass:[self class]] pathForResource:@"public_key" ofType:@"der"];
[_rsa loadPublicKeyFromFile:derPath];

// 加载私钥
NSString *p12Path = [[NSBundle bundleForClass:[self class]] pathForResource:@"private_key" ofType:@"p12"];
[_rsa loadPrivateKeyFromFile:p12Path password:privateKey];

NSString *enStr = @"哈哈哈哈哈哈哈哈哈哈哈哈哈!";

// 加密后的数据
NSData *enData = [_rsa rsaEncryptData:
                  [enStr dataUsingEncoding:NSUTF8StringEncoding]];

// 解密后的数据
NSData *deData = [_rsa rsaDecryptData:enData];
NSString *deStr = [[NSString alloc] initWithData:deData encoding:NSUTF8StringEncoding];

NSLog(@"%@,%@",enStr, deStr);

// 签名
NSData *signedData = [_rsa sha256WithRSA:enData];

// 对前面进行验证
BOOL result = [_rsa rsaSHA256VertifyingData:enData withSignature:signedData];
if (result) {
      NSLog(@"验签成功");
}else{
   NSLog(@"验签失败");
}
}

相关文章

  • RSA签名认证

    RSA可汗学院第一章 RSA加密 RSA加密原理第一章 RSA加密原理第二章 如何生成RSA公钥私钥 生成类似支付...

  • 密码学系列 - 签名

    签名是用于消息的认证,保证该条消息不被伪造。本文主要讨论RSA签名、DSA、ECDSA 和 Schnorr 签名...

  • 应用签名原理初探(上)

    1.简单的签名认证原理 App的认证是通过RSA(非对称加密)+应用的Hash值进行数字签名认证!APP Stor...

  • swift-RSA(五)-签名/验签

    RSA支持加解密,也支持签名/验签。使用rsa如何签名/验签呢? 1.rsa 签名 2.rsa 验签 3.调用

  • C# RSA加解密和MD5加密

    1.RSA加密 2.RSA解密 3.RSA签名 RSA签名验签 4.MD5加密

  • 区块链开发——数字签名扩展 #C02

    本篇为资料整理 数字签名算法 常见的数字签名算法主要有RSA、DSA、ECDSA三种。 RSA数字签名算法 RSA...

  • 计算机安全学-第四次实践作业-2018/4/17

    [new] 1、用Python或Sage实现RSA算法的加密、解密、签名/验证签名使用sage实现RSA算法进行加...

  • 数字证书和数字签名

    数字签名是什么?RSA算法原理(一)RSA算法原理(二)RSA数字签名与加密、解密间的关系 在网络通信中,可以通过...

  • 财务对账

    RSA 签名 约定好加密算法和内容,给彼此公钥,相互请求时用自己的私钥签名后再发送。 添加 RSA 签名 对账业务...

  • RSA签名

    本篇文章只是讨论,RSA签名的算法MD5以及sha1和Java后台对应的MD5WithRSA和SHA1WithRS...

网友评论

本文标题:RSA签名认证

本文链接:https://www.haomeiwen.com/subject/zzgtrttx.html