免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2140 | 回复: 0
打印 上一主题 下一主题

一个RSA加密算法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-11 19:46 |只看该作者 |倒序浏览
  1. package com;

  2. import java.security.Key;
  3. import java.security.KeyFactory;
  4. import java.security.KeyPair;
  5. import java.security.KeyPairGenerator;
  6. import java.security.NoSuchAlgorithmException;
  7. import java.security.PrivateKey;
  8. import java.security.PublicKey;
  9. import java.security.interfaces.RSAPrivateKey;
  10. import java.security.interfaces.RSAPublicKey;
  11. import java.security.spec.InvalidKeySpecException;
  12. import java.security.spec.PKCS8EncodedKeySpec;
  13. import java.security.spec.X509EncodedKeySpec;

  14. import java.util.HashMap;
  15. import java.util.Map;

  16. import javax.crypto.Cipher;

  17. public class RSACoder {
  18.         //算法
  19.         public static String Key_ALGORITHM="RSA";
  20.         //私钥
  21.         public static String Private_Key="RSAPrivateKey";
  22.         //公钥
  23.         public static String Public_Key="RSAPublicKey";
  24.         //密钥长度
  25.         public static int Key_Size=512;
  26.         public static Map<String,Object> initKey() throws Exception{
  27.                 //实例化密钥生成器
  28.                 KeyPairGenerator keypairgenerator=KeyPairGenerator.getInstance(Key_ALGORITHM);
  29.                 //初始化
  30.                 keypairgenerator.initialize(Key_Size);
  31.                 //获得密钥对
  32.                 KeyPair keypair=keypairgenerator.generateKeyPair();
  33.                 //密钥
  34.                 RSAPrivateKey pritekey=(RSAPrivateKey)keypair.getPrivate();
  35.                 //公钥
  36.                 RSAPublicKey pubkey=(RSAPublicKey)keypair.getPublic();
  37.                 Map<String,Object> keymap=new HashMap<String,Object>(2);
  38.                 keymap.put(Private_Key, pritekey);
  39.                 keymap.put(Public_Key, pubkey);
  40.                 return keymap;       
  41.         }
  42.         //获得密钥
  43.         public static byte[] getPrivateKey(Map<String,Object>keymap){
  44.         Key pritekey=(Key)keymap.get(Private_Key);
  45.         return pritekey.getEncoded();
  46.         }
  47.         //获得公钥
  48.         public static byte[] getPublicKey(Map<String,Object>keymap){
  49.                  Key pubkey=(Key)keymap.get(Public_Key);
  50.                  return pubkey.getEncoded();
  51.         }
  52.         //私钥加密
  53.         public static byte[] encryptByPrivateKey(byte[] key,byte[] data) throws Exception{
  54.                 //实例化密钥材料
  55.                 PKCS8EncodedKeySpec pcs8spec=new PKCS8EncodedKeySpec(key);
  56.                 //实例化密钥工厂
  57.                 KeyFactory keyfactory=KeyFactory.getInstance(Key_ALGORITHM);
  58.                 //生成私钥
  59.                 PrivateKey pritekey=keyfactory.generatePrivate(pcs8spec);
  60.                 //私钥加密
  61.                 Cipher cipher=Cipher.getInstance(pritekey.getAlgorithm());
  62.                 cipher.init(Cipher.ENCRYPT_MODE,pritekey);
  63.                 return cipher.doFinal(data);
  64.         }
  65.         //公钥解密
  66.         public static byte[] decryptByPublicKey(byte[] key,byte[] data) throws Exception{
  67.                 //实例化公钥材料
  68.                 X509EncodedKeySpec x509spec=new X509EncodedKeySpec(key);
  69.                 //实例化密钥工厂
  70.                 KeyFactory keyfactory=KeyFactory.getInstance(Key_ALGORITHM);
  71.                 //获得公钥
  72.                 PublicKey pubkey=keyfactory.generatePublic(x509spec);
  73.                 //对数据进行解密
  74.                 Cipher cipher=Cipher.getInstance(Key_ALGORITHM);
  75.                 cipher.init(Cipher.DECRYPT_MODE, pubkey);
  76.                 return cipher.doFinal(data);
  77.         }
  78.        

  79. }
复制代码
转自:http://yuncode.net/code/c_5136f1783044357

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP