加密算法整理以及签名关键代码

首先将加密算法进行一下分类。

散列加密

散列加密一般是不可逆的,即单向加密,无法解密,如:MD5、SHA

对称加密

对称加密只有一个密钥,即通过该密钥进行加密,同样也可以通过该密钥对加密后的内容解密,是可逆的,如:DES算法

非对称加密

非对称加密是有两个密钥,分别为公钥和私钥,通过公钥将内容加密,由私钥将加密后的内容解密,即公钥可以公布,私钥保存,如:DSA、RSA。

非对称加密的签名:通过私钥对一个文件生成摘要信息,即签名,由公钥校验文件和签名是否匹配,如果匹配说明中途没有被篡改过。

以下为签名的关键代码(java)

        其中生成的密钥为RSA算法类型的,生成签名的算法为SHA256withRSA算法

//生成密钥
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");//使用的加密算法
keyPairGenerator.initialize(1024);//长度
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();//生成的公钥
PrivateKey privateKey = keyPair.getPrivate();//生成的私钥

//生成签名
String  plain_text = "需要加密的文本";
Signature sign = Signature.getInstance("SHA256withRSA");//生成签名的类型
sign.initSign(privateKey);
sign.update(plain_text.getBytes());
byte[] signed = sign.sign();
String signetureStr = DatatypeConverter.printBase64Binary(signed);

//校验签名
Signature verifySign = Signature.getInstance("SHA256withRSA");//对应签名的类型
verifySign.initVerify(publicKey);
verifySign.update(plain_text.getBytes());
boolean signedSuccess = verifySign.verify(new BASE64Decoder().decodeBuffer(signetureStr));
System.out.println("验证成功?---" + signedSuccess); //校验是否成功

对于SHA256withRSA和MD5withRSA生成的签名校验见github,附链接:

https://github.com/sunrui849/signatureValid.git

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值