Android之RAS加密算法测试实例

Saadiya ·
更新时间:2024-11-14
· 568 次阅读

代码如下:
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.interfaces.RSAPrivateKey;  
import java.security.interfaces.RSAPublicKey;  
import java.security.spec.PKCS8EncodedKeySpec;  
import java.security.spec.X509EncodedKeySpec;  
import javax.crypto.Cipher;  
import sun.misc.BASE64Decoder;  
import sun.misc.BASE64Encoder;  
   
public class RSAHelper {  
       
      public static PublicKey getPublicKey(String key) throws Exception {  
            byte[] keyBytes;  
            keyBytes = (new BASE64Decoder()).decodeBuffer(key);  
            X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);  
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");  
            PublicKey publicKey = keyFactory.generatePublic(keySpec);  
            return publicKey;  
      }  
      public static PrivateKey getPrivateKey(String key) throws Exception {  
            byte[] keyBytes;  
            keyBytes = (new BASE64Decoder()).decodeBuffer(key);  
            PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);  
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");  
            PrivateKey privateKey = keyFactory.generatePrivate(keySpec);  
            return privateKey;  
      }  
       
      public static String getKeyString(Key key) throws Exception {  
            byte[] keyBytes = key.getEncoded();  
            String s = (new BASE64Encoder()).encode(keyBytes);  
            return s;  
      }  
   
      public static void main(String[] args) throws Exception {  
            KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");  
            //密钥位数  
            keyPairGen.initialize(1024);  
            //密钥对  
            KeyPair keyPair = keyPairGen.generateKeyPair();  
            // 公钥  
       &nbs p;    PublicKey publicKey = (RSAPublicKey) keyPair.getPublic();  
            // 私钥  
            PrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();  
            String publicKeyString = getKeyString(publicKey);  
            System.out.println("public:\n" + publicKeyString);  
            String privateKeyString = getKeyString(privateKey);  
            System.out.println("private:\n" + privateKeyString);  
            //加解密类  
            Cipher cipher = Cipher.getInstance("RSA");//Cipher.getInstance("RSA/ECB/PKCS1Padding");  
            //明文  
            byte[] plainText = "我们都很好!邮件:@sina.com".getBytes();  
            //加密  
            cipher.init(Cipher.ENCRYPT_MODE, publicKey);  
            byte[] enBytes = cipher.doFinal(plainText);  
           //通过密钥字符串得到密钥  
            publicKey = getPublicKey(publicKeyString);  
            privateKey = getPrivateKey(privateKeyString);  
            //解密  
            cipher.init(Cipher.DECRYPT_MODE, privateKey);  
            byte[]deBytes = cipher.doFinal(enBytes);  
            publicKeyString = getKeyString(publicKey);  
            System.out.println("public:\n" +publicKeyString);  
            privateKeyString = getKeyString(privateKey);  
            System.out.println("private:\n" + privateKeyString);  
            String s = new String(deBytes);  
            System.out.println(s);  
   
      }  
}
您可能感兴趣的文章:简单讲解iOS应用开发中的MD5加密的相关使用一行代码实现IOS 3DES加密解密iOS中使用MD5加密字符串iOS中MD5加密算法的介绍和使用iOS常用加密算法介绍和代码实践android md5加密与rsa加解密实现代码Android AES加密工具类分享Android 加密解密字符串详解Android实现短信加密功能(发送加密短信、解密本地短信)Android、iOS和Java通用的AES128加密解密示例代码



ras 算法测试 算法 测试 Android

需要 登录 后方可回复, 如果你还没有账号请 注册新账号