快速业务通道

Java加密技术(四) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23

Java加密技术(四)

时间:2010-12-12

接下来我们介绍典型的非对称加密算法——RSA

RSA

这种算法1978年就出现了,它是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。

这种加密算法的特点主要是密钥的变化,上文我们看到DES只有一个密钥。相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了。RSA同时有两把钥匙,公钥与私钥。同时支持数字签名。数字签名的意义在于,对传输过来的数据进行校验。确保数据在传输工程中不被修改。

流程分析:

甲方构建密钥对儿,将公钥公布给乙方,将私钥保留。

甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给乙方签名以及加密后的数据;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。

乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。

按如上步骤给出序列图,如下:

Java加密技术(四) - 编程入门网

Java加密技术(四) - 编程入门网

Java加密技术(四) - 编程入门网

Java紗畜室宝?膨?(2)

扮寂:2010-12-12

宥狛java旗鷹糞?泌和?Coder窃需 Java紗畜室宝?匯?

Java旗鷹

import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import java.security.Signature; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import java.util.HashMap; import java.util.Map; import javax.crypto.Cipher; /**   * RSA芦畠園鷹怏周   *   * @author 塑彊   * @version 1.0   * @since 1.0   */ public abstract class RSACoder extends Coder {      public static final String KEY_ALGORITHM = "RSA";      public static final String SIGNATURE_ALGORITHM = "MD5withRSA";      private static final String PUBLIC_KEY = "RSAPublicKey";      private static final String PRIVATE_KEY = "RSAPrivateKey";      /**       * 喘暴埒斤佚連伏撹方忖禰兆       *       * @param data       *            紗畜方象       * @param privateKey       *            暴埒       *       * @return       * @throws Exception       */      public static String sign(byte[] data, String privateKey) throws Exception {          // 盾畜喇base64園鷹議暴埒          byte[] keyBytes = decryptBASE64(privateKey);          // 更夛PKCS8EncodedKeySpec斤?          PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);          // KEY_ALGORITHM 峺協議紗畜麻隈          KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);          // 函暴埒革斤?          PrivateKey priKey = keyFactory.generatePrivate(pkcs8KeySpec);          // 喘暴埒斤佚連伏撹方忖禰兆          Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);          signature.in

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号