给企业做网站的公司有哪些,深圳宝安快餐服务200便宜,腾讯会议新闻,阿里云做电脑网站文章目录 一、RSA简介二、RSA 原理介绍三、RSA 秘钥对生成1. 密钥对生成2. 获取公钥3. 获取私钥 四、PublicKey 和PrivateKey 的保存1. 获取公钥十六进制字符串1. 获取私钥十六进制字符串 五、PublicKey 和 PrivateKey 加载1. 加载公钥2. 加载私钥 六、 RSA加解密1. RSA 支持三… 文章目录 一、RSA简介二、RSA 原理介绍三、RSA 秘钥对生成1. 密钥对生成2. 获取公钥3. 获取私钥 四、PublicKey 和PrivateKey 的保存1. 获取公钥十六进制字符串1. 获取私钥十六进制字符串 五、PublicKey 和 PrivateKey 加载1. 加载公钥2. 加载私钥 六、 RSA加解密1. RSA 支持三种加密方式2.RSA加密3. RSA解密 七、实例代码 一、RSA简介
RSA是一种常用的非对称加密算法所谓非对称加密是指使用一对密钥公钥和私钥进行加密和解密公钥人人都可以获得用于加密数据私钥保存在服务器中用于解密数据。加密解密过程如下 使用RSA进行加密解密其优点是非常不容易破解缺点是和对称加密如AES相比加密速度较慢。因此实际使用中常常将对称加密和非对称加密结合使用即使用非对称加密协商对称加密的密钥使用对称加密密钥加密传输内容。
二、RSA 原理介绍
RSA是目前最有影响力的公钥加密算法该算法基于一个十分简单的数论事实将两个大素数相乘十分容易但想要对其乘积进行因式分解却极其困 难因此可以将乘积公开作为加密密钥即公钥而两个大素数组合成私钥。公钥是可发布的供任何人使用私钥则为自己所有
三、RSA 秘钥对生成
1. 密钥对生成 private static KeyPair genKeyPair() {try {KeyPairGenerator keyPairGen null;keyPairGen KeyPairGenerator.getInstance(RSA);keyPairGen.initialize(2048, new SecureRandom());return keyPairGen.generateKeyPair();} catch (Exception e) {e.printStackTrace();}return null;}2. 获取公钥 public static PublicKey getPublicKey(KeyPair keyPair){return keyPair.getPublic();}3. 获取私钥 public static PrivateKey getPrivateKey(KeyPair keyPair){return keyPair.getPrivate();}四、PublicKey 和PrivateKey 的保存
1. 获取公钥十六进制字符串 public static String getHexStrPublicKey(PublicKey publicKey){byte[] publicKeyEncoded publicKey.getEncoded();return ConvectionUtils.byte2HexStr(publicKeyEncoded);}1. 获取私钥十六进制字符串
public static String getHexStrPrivateKey(PrivateKey privateKey){byte[] privateKeyEncoded privateKey.getEncoded();return ConvectionUtils.byte2HexStr(privateKeyEncoded);
}五、PublicKey 和 PrivateKey 加载
1. 加载公钥 public static PublicKey loadPublicKey(String publicKeyStr) throws Exception {try {byte[] buffer ConvectionUtils.hexStr2Bytes(publicKeyStr);KeyFactory keyFactory KeyFactory.getInstance(RSA);X509EncodedKeySpec keySpec new X509EncodedKeySpec(buffer);return keyFactory.generatePublic(keySpec);} catch (Exception e) {e.printStackTrace();}return null;}2. 加载私钥 public static PrivateKey loadPrivateKey(String privateKeyStr) throws Exception {try {byte[] buffer ConvectionUtils.hexStr2Bytes(privateKeyStr);PKCS8EncodedKeySpec keySpec new PKCS8EncodedKeySpec(buffer);KeyFactory keyFactory KeyFactory.getInstance(RSA);return keyFactory.generatePrivate(keySpec);} catch (Exception e) {e.printStackTrace();}return null;}六、 RSA加解密
1. RSA 支持三种加密方式
RSA/ECB/PKCS1Padding (1024, 2048)RSA/ECB/OAEPWithSHA-1AndMGF1Padding (1024, 2048)RSA/ECB/OAEPWithSHA-256AndMGF1Padding (1024, 2048) ’
2.RSA加密 public static byte[] encrypt(PublicKey publicKey, byte[] plainTextData) {if (publicKey null || plainTextData null) {return null;}Cipher cipher;try {cipher Cipher.getInstance(RSA/ECB/PKCS1Padding);cipher.init(Cipher.ENCRYPT_MODE, publicKey);return cipher.doFinal(plainTextData);} catch (Exception e) {e.printStackTrace();}return null;}3. RSA解密
public static byte[] decrypt(RSAPrivateKey privateKey, byte[] cipherData) {if (privateKey null || cipherData null) {return null;}Cipher cipher null;try {cipher Cipher.getInstance(RSA/ECB/PKCS1Padding);cipher.init(Cipher.DECRYPT_MODE, privateKey);return cipher.doFinal(cipherData);} catch (Exception e) {e.printStackTrace();}return null;} RSA在线加密解密
七、实例代码
AndroidEncryption