JAVA加解密 -- 对称加密算法与非对称加密算法

    xiaoxiao2021-04-03  39

    对称加密算法:双方必须约定好算法  DES 数据加密标准:由于不断地被破解 自98年起就已经逐渐放弃使用  AES 目前使用最多的加密方式,官方并未公布加密方式已被破解,替代DES 

    实现和DES非常接近 JDK无政策限制权限文件:因为某些国家的进口管制限制,Java发布的运行环境包中的加解密有一定的限制

    构成:口令+盐(特殊的随机数或者字符串)

    非对称加密算法:与门加密算法。  公钥和私钥分开,使用公钥加密的数据只有它的私钥一致才能解开。  DH 密钥交换算法  ・・初始化发送方密钥:KeyPairGenrator(得到keyPair) KeyPair(得到公钥和私钥) PublicKey(公钥)  初始化接收方密钥:KeyFactory(通过某种规范生成密钥) X509EncodeedKeySpec(按照x509生成编码)  DHPublicKey DHParameterSpec(使用参数的集合) KeypairGenerator privateKey  密钥构建:KeyAgreement(提供秘钥协定协议) SecretKey(秘密密钥,生成一个分组的秘密密钥)KeyFactory  X509EncodeedKeySpec PublicKey  加密、解密  Cipher(为加密解密提供功能接口)  RSA 基于因子分解 目前适用范围最广的非对称加密算法  唯一广泛接受并实现  数据加密&数字签名  公钥加密、私钥解密  私钥加密、公钥解密 

    “`  //1.//初始化密钥  KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(“RSA”);  keyPairGenerator.initialize(512);  KeyPair keyPair = keyPairGenerator.generateKeyPair();  RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();  RSAPrivateCrtKey rsaPrivateCrtKey = (RSAPrivateCrtKey) keyPair.getPrivate();  System.out.println(“public Key:” + org.apache.commons.codec.binary.Base64.encodeBase64String(rsaPublicKey.getEncoded()));  System.out.println(“private Key:”+org.apache.commons.codec.binary.Base64.encodeBase64String(rsaPrivateCrtKey.getEncoded()));

    //2.a//私钥加密,公钥解密 -- 加密 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateCrtKey.getEncoded()); KeyFactory factory = KeyFactory.getInstance("RSA"); PrivateKey privateKey = factory.generatePrivate(pkcs8EncodedKeySpec); Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, privateKey); byte[] result = cipher.doFinal(str.getBytes()); System.out.println("私钥加密、公钥解密:"+org.apache.commons.codec.binary.Base64.encodeBase64String(result)); //2.b//私钥加密,公钥解密 -- 解密 X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded()); factory = KeyFactory.getInstance("RSA"); PublicKey publicKey = factory.generatePublic(x509EncodedKeySpec); cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE,publicKey); result = cipher.doFinal(result); System.out.println("私钥加密、公钥解密:"+new String(result)); //3.a公钥加密、私钥 -- 加密 x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded()); factory = KeyFactory.getInstance("RSA"); publicKey = factory.generatePublic(x509EncodedKeySpec); cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE,publicKey); result = cipher.doFinal(str.getBytes()); System.out.println("公钥加密、私钥 -- 加密:"+org.apache.commons.codec.binary.Base64.encodeBase64String(result)); //3.b公钥加密、私钥 -- 加密 pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateCrtKey.getEncoded()); factory = KeyFactory.getInstance("RSA"); privateKey = factory.generatePrivate(pkcs8EncodedKeySpec); cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, privateKey); result = cipher.doFinal(result); System.out.println("公钥加密、私钥 -- 解密:"+new String(result));

    “`//其余部分实现方法差不多,就不都贴出来了,下面我放上源码下载地址  ElGamal 公钥加密算法 BC实现  和RSA实现方式一样.  Security.addProvider(new BouncyCastleProvider);  javaBase64 消息摘要算法加解密 对称算法加解密 非对称算法加解密 数字签名算法源码  包含Base64 MD家族(MD2 MD4 MD5)DES AES DH RSA DSA ECDSA 算法的加解密方式

    算法实现源码下载地址:http://download.csdn.net/detail/jacxuan/9774737

    转载请注明原文地址: https://ju.6miu.com/read-665871.html

    最新回复(0)