美文网首页
非对称加密算法之七

非对称加密算法之七

作者: 喏喏2021 | 来源:发表于2021-12-10 10:45 被阅读0次

1. 概念

  • 是一种针对密钥的保密传输算法
  • 算法复杂,耗时较长,安全性高
  • 最广泛使用的算法是RSA,其它的还有Elgamal、背包算法、Rabin、D-H、ECC(椭圆曲线加密算法)等
  • 一般使用场景
    1. 甲方在客户端生成公钥、私钥
    2. 将公钥公布出来,给通信的乙方
    3. 乙方客户端随机生成对称加密的密钥
    4. 将密钥,使用公钥进行加密,传输给甲
    5. 乙方用对称加密的密钥,加密信息,也传输给甲
    6. 甲用自己的私钥,解密出用公钥加密的对称加密的密钥,用这个密钥解密信息

2. 示例

public class RSATest {
    public static class User {
        private String name; //姓名
        private PublicKey publicKey; //公钥
        private PrivateKey privateKey; //私钥
        public User(String name) throws NoSuchAlgorithmException {
            this.name = name;
            KeyPairGenerator kpGen = KeyPairGenerator.getInstance("RSA");
            kpGen.initialize(512); //密钥大小,也有1024,2048长度
            KeyPair keyPair = kpGen.generateKeyPair(); //生成自己的密钥对
            this.publicKey = keyPair.getPublic();
            this.privateKey = keyPair.getPrivate();
        }
        
        //公钥加密
        public byte[] encrypt(byte[] message) throws Exception {
            Cipher cipher = Cipher.getInstance("RSA");//指定算法
            cipher.init(cipher.ENCRYPT_MODE, this.publicKey); //加密模式,使用公钥
            return cipher.doFinal(message);
        }
        
        //私钥解密
        public byte[] decrypt(byte[] message) throws Exception {
            Cipher cipher = Cipher.getInstance("RSA"); //指定算法
            cipher.init(cipher.DECRYPT_MODE, this.privateKey); //解密模式,使用私钥
            return cipher.doFinal(message); //解密
        }
        
        //输出公钥私钥,密钥
        public void printInfo() {
            System.out.println("name:" + this.name);
            System.out.printf("公钥:%x\n",new BigInteger(1,this.publicKey.getEncoded()));
            System.out.printf("私钥:%x\n",new BigInteger(1,this.privateKey.getEncoded()));
        }
    }
    
    public static void main(String[] args) throws Exception {
        String message = "你好!";
        byte[] messageData = message.getBytes("UTF-8");
        
        User user = new User("小明");     
        //输出密钥对
        user.printInfo();
        
        //公钥加密信息
        byte[] encryptData = user.encrypt(messageData);
        
        //私钥解密信息
        byte[] decryptData = user.decrypt(encryptData);
        System.out.println("解密后内容:" + new String(decryptData,"UTF-8"));
    }
}
//====输出====
//name:小明
//公钥:
305c300d06092a864886f70d0101010500034b00304802410086ddfe7ffefbb5affb4525e302bf2334c150cf07ad67cc7525e967d1a8c6d8c5754915982fbd418b101802f168db7da410b477be5f71742c89151ece817a00390203010001
//私钥:
30820154020100300d06092a864886f70d01010105000482013e3082013a02010002410086ddfe7ffefbb5affb4525e302bf2334c150cf07ad67cc7525e967d1a8c6d8c5754915982fbd418b101802f168db7da410b477be5f71742c89151ece817a0039020301000102401c23b1782f518185285e331b7c7538f946e47f6dd0a679a86fb29570cf503de61705bf512d3f0e1926a4950305e9ae0dd047e783a3953506541c932467cd9c69022100d202c11db21f861eb41de47bad83a02164bb376fdbaf1dc106a8fa45ff9dbb1b022100a466acb7103d6718d8c7d6ccfeb0cb35cb5b3e84998909b510772a3e63a4b33b0221008ce9b8367abc583be5d360e9f3a52c1efbfdfad69d6b44e5add85805fbdc141d02203d876ffcd3c7275ed54375d1234167ccaa5f6bf694c005320f078a77ef332521022013262f95175427d9755cbe85eae63c06cb854b2b2c5423ea8e431d8eae930fe9
//解密后内容:你好!

大家可以发现私钥的长度要比公钥长很多!

相关文章

  • 3.1 DH算法简介

    非对称加密算法 - DH算法 DH算法是非对称加密算法的鼻祖,为非对称加密算法奠定了基础,主要用途是进行密钥交换。...

  • ios开发之证书和签名机制(一)

    非对称加密和摘要 1、非对称加密的特性和用法 1) 非对称加密算法(RSA):非对称加密算法指加密秘钥和解密秘钥是...

  • 1. 常用的加密算法

    常用的加解密算法分三大类:非对称密钥加密算法、对称密钥加密算法、Hash加密算法 非对称密钥加密算法常见算法:RS...

  • 非对称加密之 - RSA

    一、什么是非对称加密算法? 非对称主要是相对于对称加密算法而言的。对称加密算法加解密使用同一个秘钥;非对称算法则有...

  • Android 拿到私钥字符串对目标字符串进行加密

    关于加密算法 分为对称和非对称加密算法,其中RSA是常用非对称加密算法。对称加密中AES高级加密标准使用Rijnd...

  • 非对称加密算法RSA 学习

    非对称加密算法RSA 学习 RSA加密算法是一种非对称加密算法。RSA是1977年由罗纳德·李维斯特(Ron Ri...

  • 非对称加密算法之七

    1. 概念 是一种针对密钥的保密传输算法 算法复杂,耗时较长,安全性高 最广泛使用的算法是RSA,其它的还有Elg...

  • 认识下非对称加密

    什么是非对称加密? 非对称加密算法是一种密钥的保密方法。 非对称加密算法需要两个密钥:(publicly)和(pr...

  • 3.2 RSA算法简介

    非对称加密技术 -- RSA算法 RSA算法是流行最广泛的非对称加密算法,也是唯一的基于因式分解的非对称加密算法。...

  • 对称加密算法原理--OpenSSL演示、iOS代码运用及CCCr

    之前介绍了非对称加密算法,这篇文章介绍一下在非对称加密算法出现之前的对称加密算法,常见的对称加密算法、终端演示Op...

网友评论

      本文标题:非对称加密算法之七

      本文链接:https://www.haomeiwen.com/subject/sblcfrtx.html