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

    xiaoxiao2021-03-25  120

    对称加密算法:双方必须约定好算法 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-8378.html

    最新回复(0)