zoukankan      html  css  js  c++  java
  • Java加密算法 RSA

    Java加密算法 RSA

     分类:

    公钥加密也称为非对称加密、速度慢、加密和解密的钥匙不相同,某一个人持有私钥,任何人都可以知道公钥

    [java] view plaincopy在CODE上查看代码片派生到我的代码片
     
     
    1. package com.stone.security;  
    2.   
    3. import java.security.KeyPair;  
    4. import java.security.KeyPairGenerator;  
    5. import java.security.PrivateKey;  
    6. import java.security.PublicKey;  
    7. import java.util.Arrays;  
    8.   
    9. import javax.crypto.Cipher;  
    10.   
    11. /** 
    12.  * RSA算法 公钥加密 非对称加密 
    13.  * @author stone 
    14.  * @date 2014-03-11 00:28:38 
    15.  */  
    16. public class RSA {  
    17.     public static final String KEY_ALGORITHM = "RSA";  
    18.     public static final String CIPHER_ALGORITHM_ECB1 = "RSA/ECB/PKCS1Padding";  
    19.     public static final String CIPHER_ALGORITHM_ECB2 = "RSA/ECB/OAEPWithSHA-1AndMGF1Padding"; //不能用  
    20.     public static final String CIPHER_ALGORITHM_ECB3 = "OAEPWithSHA-256AndMGF1Padding"; //不能用  
    21.       
    22.     static PublicKey publicKey;  
    23.     static PrivateKey privateKey;  
    24.     static Cipher cipher;  
    25.     static KeyPair keyPair;  
    26.       
    27.     public static void main(String[] args) throws Exception {  
    28.         method1("斯柯达U*(Sfsad7f()*^%%$");  
    29.         method2("斯柯达U*(Sfsad7f()*^%%$");  
    30.         method3("斯柯达U*(Sfsad7f()*^%%$");  
    31.           
    32.     }  
    33.       
    34.     /** 
    35.      * 公钥加密,私钥解密    使用默认CIPHER_ALGORITHM_ECB1 
    36.      * @param str 
    37.      * @throws Exception 
    38.      */  
    39.     static void method1(String str) throws Exception {  
    40.         KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);  
    41.         KeyPair keyPair = keyGenerator.generateKeyPair();  
    42.         publicKey = keyPair.getPublic();  
    43.         privateKey = keyPair.getPrivate();  
    44.         cipher = Cipher.getInstance(KEY_ALGORITHM);  
    45.         cipher.init(Cipher.ENCRYPT_MODE, publicKey); //公钥加密  
    46.         byte[] encrypt = cipher.doFinal(str.getBytes());  
    47.         System.out.println("公钥加密后1:" + Arrays.toString(encrypt));  
    48.           
    49.         cipher.init(Cipher.DECRYPT_MODE, privateKey);//私钥解密  
    50.         byte[] decrypt = cipher.doFinal(encrypt);  
    51.         System.out.println("私钥解密后1:" + new String(decrypt));  
    52.     }  
    53.       
    54.     /** 
    55.      * 私钥加密,公钥解密    使用默认CIPHER_ALGORITHM_ECB1 
    56.      * @param str 
    57.      * @throws Exception 
    58.      */  
    59.     static void method2(String str) throws Exception {  
    60.         KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);  
    61.         KeyPair keyPair = keyGenerator.generateKeyPair();  
    62.         publicKey = keyPair.getPublic();  
    63.         privateKey = keyPair.getPrivate();  
    64.         cipher = Cipher.getInstance(KEY_ALGORITHM);  
    65.         cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私钥加密  
    66.         byte[] encrypt = cipher.doFinal(str.getBytes());  
    67.         System.out.println("私钥加密后2:" + Arrays.toString(encrypt));  
    68.           
    69.         cipher.init(Cipher.DECRYPT_MODE, publicKey);//公钥解密  
    70.         byte[] decrypt = cipher.doFinal(encrypt);  
    71.         System.out.println("公钥解密后2:" + new String(decrypt));  
    72.     }  
    73.       
    74.     /** 
    75.      * 私钥加密,公钥解密    使用CIPHER_ALGORITHM_ECB1 = RSA/ECB/PKCS1Padding 
    76.      * @param str 
    77.      * @throws Exception 
    78.      */  
    79.     static void method3(String str) throws Exception {  
    80.         KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);  
    81.         KeyPair keyPair = keyGenerator.generateKeyPair();  
    82.         publicKey = keyPair.getPublic();  
    83.         privateKey = keyPair.getPrivate();  
    84.         cipher = Cipher.getInstance(CIPHER_ALGORITHM_ECB1);  
    85.         cipher.init(Cipher.ENCRYPT_MODE, privateKey); //私钥加密  
    86.         byte[] encrypt = cipher.doFinal(str.getBytes());  
    87.         System.out.println("私钥加密后3:" + Arrays.toString(encrypt));  
    88.           
    89.         cipher.init(Cipher.DECRYPT_MODE, publicKey);//公钥解密  
    90.         byte[] decrypt = cipher.doFinal(encrypt);  
    91.         System.out.println("公钥解密后3:" + new String(decrypt));  
    92.     }  
    93. }  
     
     
  • 相关阅读:
    Tor网络突破IP封锁,爬虫好搭档【入门手册】
    ubuntu python3相关
    toutiao url
    处理跨域请求
    Python使用虚拟环境
    Python删除文件,空文件夹,非空文件夹
    如何在jupyter中使用Python2和Python3
    推荐使用国内的豆瓣源安装Python插件
    Python数据库查询之组合条件查询-F&Q查询
    获取Django项目的全部url
  • 原文地址:https://www.cnblogs.com/skyay/p/6155924.html
Copyright © 2011-2022 走看看