Android之RAS加密算法测试实例

所属分类: 软件编程 / Android 阅读数: 467
收藏 0 赞 0 分享
复制代码 代码如下:

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();  

            // 公钥  
            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);  

   
      }  

}
更多精彩内容其他人还在看

Android实现信号强度监听的方法

这篇文章主要介绍了Android实现信号强度监听的方法,是Android手机中很常见的一个实用功能,需要的朋友可以参考下
收藏 0 赞 0 分享

Android实现Activity界面切换添加动画特效的方法

这篇文章主要介绍了Android实现Activity界面切换添加动画特效的方法,非常实用的技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中Dialog去黑边的方法

这篇文章主要介绍了Android中Dialog去黑边的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Qt for Android开发实例教程

这篇文章主要介绍了Qt for Android开发的方法,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发之时间日期操作实例

这篇文章主要介绍了Android开发之时间日期操作,是Android程序开发中常见的一个功能,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发之时间日期组件用法实例

这篇文章主要介绍了Android开发之时间日期组件用法,主要介绍了TimePicker和DatePicker组件,对于Android程序开发有不错的借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发之获取网络链接状态

这篇文章主要介绍了Android获取网络链接状态的方法,主要是通过ConnectivityManager类来完成的,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发之广播机制浅析

这篇文章主要介绍了Android开发之广播机制浅析,主要包括了发布、接收及配置广播的实例,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发之登录验证实例教程

这篇文章主要介绍了Android开发之登录验证实现方法,包括发送数据、服务器端验证、配置文件等,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发之注册登录方法示例

这篇文章主要介绍了Android开发的注册登录方法,是针对Android程序设计中版本兼容性的进一步完善,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多