首页 > 作文

java非对称加密算法(java代码大全及详解)

更新时间:2023-04-05 02:28:37 阅读: 评论:0

我们在做技术接口时,尤其对外提供时,为了提高服务接口的安全(防爆破,防重放,防篡改等)一般会采用接口验证的方式,但是在验证的时候为了提升参数请求前后的安全,我们会采用加密。普通加密基本都是对称的,不能逆向。

下面,我介绍一种rsa的算法,通过这个加密算法实现接口请求前后的数字签名验证。具体实现流程为:

接口数字签名验证的而基本流程

下面我将rsa的签名算法代码分享下,下载即用:

public class rsaencrypt {    private static map<integer, string> keymap = new hashmap<integer, string>();  //用于封装随机产生的公钥与私钥    private static string pirvatekey="miibuwibadanbgkqhkig9w0baqefaascat0wgge5ageaakeags8vf8ekvf9yoqoyhfy4hhgypnkskrrmkjrfrkezhfzwfx2ccoon74qz3qw15vv9jmd5dwapdmvavx5hcknurwidaqabakbps6fwd4pwmini4usula1shdmqfc0pycisd8odbrattjrv6w9oh+a/cikdir4dz0pss9qh0mxb0bthrq9vs0wbaieax+y2vcrbnoznqswuonzcvkihazkrawxobr8mqfjnoucciqclavcvg0skwv65vs2zr0quqnafdccmh7b4gm2dcnaqigasxgvy3jv+hd1/j6fnnuuoqw0cbp1sofsmh9mlr3xy8cifeygex9cay/vstwalws3pmbgxxy2jdb2u6q86vx5rubaibhoiuoyrxrs77ifdfm1kyfhrpyznstyjhcvu4u5kwwia==";    private static string publickey="mfwwdqyjkozihvcnaqebbqadswawsajbaievfx/hilx/wkkqmorcuir4gktzepk65pca36ynmr32vhcdnaqkj++egd6snevvfyza+q1mj3tfqfcer3jdveccaweaaq==";    private static string ssb="fsauucym3fi3eyjwzrpxni1dbwclt3bfuql5wsdv24qtlmymrn2i5wrkqggxmtewrj78obf1zke9rtpe+23zzw==";    public static void main(string[] args) throws exception {        //生成公钥和私钥        //genkeypair();        //string randomstr= randomstrutil.getran武汉保卫战dom(24, randomstrutil.type.letter_capital_number);        string uuid=uuidutil.getuuid();        string hashcode=string.valueof(uuid.hashcode());        system.out.println("hashcode="+hashcode);        long time=system.currenttimemillis();        //system.out.println("随机hash"+hashcode);    非常霸气的高三励志语    //加密字符串        string message = time+"@=@"+uuid;        //system.out.println("随机生成的公钥为:" + publickey);        //system.out.println("随机生成的私钥为:" + pirvatekey);        string messageen = encrypt(message,publickey);        system.out.println("加密后的字符串为:" + messageen);        string messagede = decrypt(messageen,pirvatekey);        system.out.println("源文数据="+message);        system.out.println("解密数据=" + messagede);        string bs=messagede.split("@=@")[1];        system.out.println(bs);    }    /**     * 随机生成密钥对     * @throws nosuchalgorithmexception     */    public static void genkeypair() throws nosuchalgorithmexception {        // keypairgenerator类用于生成公钥和私钥对,基于rsa算法生成对象        keypairgenerator keypairgen = keypairgenerator.getinstance("rsa");        // 初始化密钥对生成器,密钥大小为96-1024位        keypairgen.initialize(1024,new curerandom());        // 生成一个密钥对,保存在keypair中        keypair keypair = keypairgen.generatekeypair();        // 得到私钥        rsaprivatekey privatekey = (rsaprivatekey) keypair.getprivate();        // 得到公钥        rsapublickey publickey = (rsapublickey) keypair.getpublic();        string publickeystring = new string(ba64.encodeba64(publickey.绩效指标getencoded()));        system.out.println("公钥="+publickeystring);        // 得到私钥字符串        string privatekeystring = new string(ba64.encodeba64((privatekey.getencoded())));        system.out.println("私钥="+privatekeystring);        // 将公钥和私钥保存到map        //0表示公钥        keymap.put(0,publickeystring);        //1表示私钥        keymap.put(1,privatekeystring);    }    /**     * rsa公钥加密     *     * @param str     *            加密字符串     晕头转向* @param publickey     *            公钥     * @return 密文     * @throws exception     *             加密过程中的异常信息     */    public static string encrypt( string str, string publickey ) throws exception{        //ba64编八万里码的公钥        byte[] decoded = ba64.decodeba64(publickey);        rsapublickey pubkey = (rsapublickey) keyfactory.getinstance("rsa").generatepublic(new x509encodedkeyspec(decoded));        //rsa加密        cipher cipher = cipher.getinstance("rsa");        cipher.init(cipher.encrypt_mode, pubkey);        string outstr = ba64.encodeba64string(cipher.dofinal(str.getbytes("utf-8")));        return outstr;    }    /**     * rsa私钥解密     *     * @param str     *            加密字符串     * @param privatekey     *            私钥     * @return 铭文     * @throws exception     *             解密过程中的异常信息     */    public static string decrypt(string str, string privatekey) throws exception{        //64位解码加密后的字符串        byte[] inputbyte = ba64.decodeba64(str.getbytes("utf-8"));        //ba64编码的私钥        byte[] decoded = ba64.decodeba64(privatekey);        rsaprivatekey prikey = (rsaprivatekey) keyfactory.getinstance("rsa").generateprivate(new pkcs8encodedkeyspec(decoded));        //rsa解密        cipher cipher = cipher.getinstance("rsa");        cipher.init(cipher.decrypt_mode, prikey);        string outstr = new string(cipher.dofinal(inputbyte));        return outstr;    }}

本文发布于:2023-04-05 02:28:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/ae3fccce5417bf76b9e85428a1001310.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:java非对称加密算法(java代码大全及详解).doc

本文 PDF 下载地址:java非对称加密算法(java代码大全及详解).pdf

标签:公钥   字符串   密钥   接口
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图