Android之RAS加密算法测试实例

 更新时间:2013年09月11日 15:32:24   作者:  
这篇文章介绍了Android之RAS加密算法测试实例,有需要的朋友可以参考一下
复制代码 代码如下:

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

   
      }  

}

相关文章

  • loadavg数据异常引发问题起源分析

    loadavg数据异常引发问题起源分析

    这篇文章主要为大家介绍了loadavg数据异常引发问题起源分析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 详解Flutter中视频播放器插件的使用教程

    详解Flutter中视频播放器插件的使用教程

    视频播放器插件是可用于Flutter的常用插件之一,在这篇文章中,将学习如何应用视频播放器插件以及控制视频播放器的不同功能,感兴趣的可以了解一下
    2022-02-02
  • android scrollview顶部渐渐消失实现实例详解

    android scrollview顶部渐渐消失实现实例详解

    这篇文章主要为大家介绍了android scrollview顶部渐渐消失实现实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Android中悬浮窗口的实现原理实例分析

    Android中悬浮窗口的实现原理实例分析

    这篇文章主要介绍了Android中悬浮窗口的实现原理,以实例形式较为详细的分析了Android悬浮窗口的原理与具体实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android夜间模式最佳实践

    Android夜间模式最佳实践

    这篇文章主要介绍了Android夜间模式最佳实践,在Android应用普遍支持夜间模式的今天,如何优雅地实现夜间模式?感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Android自定义带拼音音调Textview

    Android自定义带拼音音调Textview

    这篇文章主要介绍了Android自定义带拼音音调的Textview,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • 解决android设备断电重启后WIFI不能自动重连的BUG(收藏)

    解决android设备断电重启后WIFI不能自动重连的BUG(收藏)

    这篇文章主要介绍了解决android设备断电重启后WIFI不能自动重连的BUG,本文给出了问题描述及分析过程,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Android 中 requestWindowFeature()的应用

    Android 中 requestWindowFeature()的应用

    本文主要介绍 Android requestWindowFeature()方法,这里对 requestWindowFeature()方法进行详解,对应用程序窗体显示状态的操作有进一步了解,希望能帮助有需要的小伙伴
    2016-07-07
  • Android仿QQ6.0主页面侧滑效果

    Android仿QQ6.0主页面侧滑效果

    这篇文章主要为大家详细介绍了Android仿QQ6.0主页面侧滑效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android自定义EditText右侧带图片控件

    Android自定义EditText右侧带图片控件

    这篇文章主要为大家详细介绍了Android自定义EditText右侧带图片控件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10

最新评论