1. package rsa;
  2.  
  3. import java.security.*;
    import java.security.interfaces.*;
    import javax.crypto.*;
  4.  
  5. public class Test {
        
        protected static RSAPrivateKey privateKey;
        protected static RSAPublicKey publicKey;
        protected static byte[] resultBytes;
        
        public Test(){
            try{
                String message = "广东省广州市越秀区";
                
    //            Test p = new Test();
                System.out.println("明文是" + message);
                
                //生成公钥和私钥对,基于RSA算法生成对象
                KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
                
                //初始化密钥对生成器,密钥大小为1024位
                keyPairGen.initialize(1024);
                
                //生成一个密钥对,保存在keyPair中
                KeyPair keyPair = keyPairGen.generateKeyPair();
                
                //得到私钥和公钥
                privateKey =(RSAPrivateKey) keyPair.getPrivate();
                publicKey = (RSAPublicKey)keyPair.getPublic();
                
                
    //            System.out.println(privateKey.toString());
                
                //用公钥加密
                byte[] srcBytes = message.getBytes();
                resultBytes = Test.encrypt(publicKey, srcBytes);
                String result = new String(resultBytes);
                System.out.println("用公钥加密后密文是:" + result);
                
    //            return privateKey;
    //            //用私钥解密
    //            byte[] decBytes = Test.decrypt(privateKey,resultBytes);
    //            String dec = new String(decBytes);
    //            System.out.println("用私钥加密后的结果是:" + dec);
            }catch(Exception e){
                e.printStackTrace();
            }
    //        return null;
        }
        
        protected static byte[] encrypt(RSAPublicKey publicKey,byte[] srcBytes){
            if(publicKey != null){            
                try{
                    //Cipher负责完成加密或解密工作,基于RSA
                    Cipher cipher = Cipher.getInstance("RSA");
                    
                    //根据公钥,对Cipher对象进行初始化
                    cipher.init(Cipher.ENCRYPT_MODE, publicKey);
                    
                    //加密,结果保存进resultBytes,并返回
                    byte[] resultBytes = cipher.doFinal(srcBytes);
                    return resultBytes;
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
            return null;
        }
        
        protected static byte[] decrypt(RSAPrivateKey privateKey,byte[] encBytes){
            if(privateKey != null){
                try{
                    Cipher cipher = Cipher.getInstance("RSA");
                    
                    //根据私钥对Cipher对象进行初始化
                    cipher.init(Cipher.DECRYPT_MODE, privateKey);
                    
                    //解密并将结果保存进resultBytes
                    byte[] decBytes = cipher.doFinal(encBytes);
                    return decBytes;
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
            return null;
        }
    }
  1. package rsa;
  2.  
  3. public class PrivateKeyTest {
  4. public static void main(String[] args){
  5. Test test = new Test();
  6.  
  7. // System.out.println(Test.privateKey);
  8. // String msg = new String(Test.resultBytes);
  9.  
  10. byte[] decBytes = Test.decrypt(Test.privateKey, Test.resultBytes);
  11. String dec = new String(decBytes);
  12.  
  13. System.out.println("用私钥加密后的结果是:" + dec);
  14. }
  15. }

  在一个项目中,要对二维码进行加密,这是测试RSA加密算法的模块。由于刚接触加密算法,很多细节还不清楚。通过这个测试搞清楚了几点,一是每次加密产生的公钥和私钥都是不同。

  对Java的一些基础知识也有了补充。在定义了静态变量后,用类名调用,并且在之后使用这一静态变量的时候不要再重新定义,不然会产生空指针问题。

RSA加密算法的java实现的更多相关文章

  1. Java使用RSA加密算法对内容进行加密

    什么是RSA加密算法 RSA是一种典型的非对称性加密算法,具体介绍可参考阮一峰的日志 RSA算法原理 下面是使用RSA算法对传输内容进行加密的一个简要Java案例,主要用到了三个类,大体实现如下: 对 ...

  2. java RSA加密算法

    [转]RSA加密算法   RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前 ...

  3. java实现rsa加密算法【5min快速应用教程】

    该篇文章的主要目的是让读者能够迅速应用到项目中,想要了解详细的rsa加密算法的,可以百度找到更多原理.深度分析的文章. RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一 ...

  4. .net(c#)版RSA加密算法,拿走不谢

    今天有同学对接一个支付平台,涉及到RSA的签名和验签.由于对方是java的sdk,翻成c#语言时,搞了半天也没搞定.网上搜的东西都是各种copy还不解决问题. 碰巧,我之前对接过连连银通的网银支付和代 ...

  5. RSA加密算法的简单案例

    RSA加密算法是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击. 那关于RSA加密算法有哪些应用呢?以下举一个数据库身份验证的案例. 在使用数据集进行身份认证时,密码存在数据 ...

  6. 轻松学习RSA加密算法原理

    转自:http://blog.csdn.net/sunmenggmail/article/details/11994013 http://blog.csdn.net/q376420785/articl ...

  7. RSA加密算法原理及RES签名算法简介

    第一部分:RSA算法原理与加密解密 一.RSA加密过程简述 A和B进行加密通信时,B首先要生成一对密钥.一个是公钥,给A,B自己持有私钥.A使用B的公钥加密要加密发送的内容,然后B在通过自己的私钥解密 ...

  8. 常用加密算法的Java实现总结

    常用加密算法的Java实现(一) ——单向加密算法MD5和SHA 1.Java的安全体系架构 1.1           Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 A ...

  9. 常用加密算法的Java实现(一) ——单向加密算法MD5和SHA

    1.Java的安全体系架构 1.1           Java的安全体系架构介绍 Java中为安全框架提供类和接口.JDK 安全 API 是 Java 编程语言的核心 API,位于 java.sec ...

随机推荐

  1. 【小贴士】关于transitionEnd/animate的一个有趣故事

    前言 在很久之前,我们项目有一个动画功能,功能本身很简单,便是典型的右进左出,并且带动画功能 以当时来说,虽然很简单,但是受限于框架本身的难度,就直接使用了CSS3的方式完成了功能 当时主要使用tra ...

  2. MYSQL进阶,新手变司机

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( S ...

  3. MYSQL新手入门篇

    一.数据库的简介 什么是数据库? 数据的仓库,如:在atm的实例中我们创建一个db目录称之为数据库 什么是 MySQL.Oracle.SQLite.Access.MS SQL Server等 ? 他们 ...

  4. JavaScript-数组去重由慢到快由繁到简

    indexOf去重 Array.prototype.unique1 = function() { var arr = []; for (var i = 0; i < this.length; i ...

  5. Egret白鹭H5小游戏开发入门(二)

    前言: 昨天的文章中简单的介绍了Egret白鹭引擎从安装到基本的使用配置等问题,今天着重介绍H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明,开始布局等等. 整体概况: 根据上一篇 ...

  6. #VSTS日志# TFS 2015 Update 2 RC2新功能

    有段时间没有更新#VSTS日志#了,最近小编太忙,全国各地飞来飞去给各种不同的团队实施敏捷,今天冷不丁一看,呀!TFS 2015 Update 2 RC2都已经发布了.里面好东西不少,列出几个给大家瞧 ...

  7. js自动完成

    源代码来自于: http://down.51cto.com/data/921955  我做了一下修改. 要做一个自动完成的功能,又不想依赖一大堆的js脚本库,我要的是定制的,代码尽可能简洁,方便修改和 ...

  8. 《Java JDK7 学习笔记》课后练习题1

    1.()组织负责监督审查Java相关技术规格的演进. A. JCP B. Apache C. EU D. W3C 2.Java技术规格必须以()正式文件提交审查. A. RFC B. JSR C. I ...

  9. 分布式搜索引擎Elasticsearch的查询与过滤

    一.写入 先来一个简单的官方例子,插入的参数为-XPUT,插入一条记录. curl -XPUT 'http://localhost:9200/test/users/1' -d '{ "use ...

  10. jquery $.trim()去除字符串空格详解

    jquery $.trim()去除字符串空格详解 语法 jQuery.trim()函数用于去除字符串两端的空白字符. 作用 该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止 ...