当前位置: 首页 > news >正文

公司建设网站的目的遂宁微章建设举报网站

公司建设网站的目的,遂宁微章建设举报网站,花艺企业网站建设项目规划,做网站软件miscrosoft加密算法---RSA 非对称加密原理及使用一 非对称加密原理介绍二 加密解密测试2.1 加密解密工具类2.2 测试一 非对称加密原理介绍 非对称加密算法中#xff0c;有两个密钥#xff1a;公钥和私钥。它们是一对#xff0c;如果用公钥进行加密#xff0c;只有用对应的私钥才能解… 加密算法---RSA 非对称加密原理及使用一 非对称加密原理介绍二 加密解密测试2.1 加密解密工具类2.2 测试一 非对称加密原理介绍 非对称加密算法中有两个密钥公钥和私钥。它们是一对如果用公钥进行加密只有用对应的私钥才能解密如果用私钥进行加密只有用对应的公钥才能解密。     非对称加密算法实现机密信息的交换过程为甲方生成一对密钥并将其中一个作为公钥向其他方公开得到该公钥的乙方使用该密钥对机密信息进行加密后发送给甲方甲方再用自己的另一个专用密钥对加密后的信息进行解密。     最有名的非对称加密算法当属 RSA 了本文将对 RSA 算法的加/解密过程进行详细剖析。     非对称加密拥有两把密钥。      RSA —— 经典的非对称加密算法 二 加密解密测试 2.1 加密解密工具类 import lombok.extern.slf4j.Slf4j;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.security.*; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import java.util.Base64; import java.util.HashMap; import java.util.Map;Slf4j public class EncryptUtils {/*** sha 加密** param str* return*/public static String sha(String str) {String sha256Str ;try {MessageDigest sha256Deget MessageDigest.getInstance(SHA-256);byte[] sha256Encode sha256Deget.digest(str.getBytes());sha256Str ByteToHexStr(sha256Encode);} catch (Exception e) {log.info(FRLOG:SHA256加密异常:, e.getMessage());}return sha256Str;}/*** byte数组转16进制字符串** param bytes* return*/private static String ByteToHexStr(byte[] bytes) {String hexStr ;for (int i 0; i bytes.length; i) {int temp bytes[i] 0xff;String tempHex Integer.toHexString(temp);if (tempHex.length() 2) {hexStr 0 tempHex;} else {hexStr tempHex;}}return hexStr;} /**--------------------------对称加密aes----------------------------------*//*** aes 加密** param str* param privateKey* return*/public static String aesEncrypt(String str, String privateKey) {try {// 生成密钥对象SecretKey secKey generateAesKey(privateKey.getBytes());// 获取 AES 密码器Cipher cipher Cipher.getInstance(AES);// 初始化密码器加密模型cipher.init(Cipher.ENCRYPT_MODE, secKey);// 加密数据, 返回密文byte[] cipherBytes cipher.doFinal(str.getBytes()); // return new BASE64Encoder().encodeBuffer(cipherBytes);return Base64.getEncoder().encodeToString(cipherBytes);} catch (Throwable e) {log.info(aes 加密异常, e.getMessage());}return null;}/*** aes 解密** param str* param privateKey* return*/public static String aesDecrypt(String str, String privateKey) {try {// 生成密钥对象SecretKey secKey generateAesKey(privateKey.getBytes());// 获取 AES 密码器Cipher cipher Cipher.getInstance(AES);// 初始化密码器加密模型cipher.init(Cipher.DECRYPT_MODE, secKey);byte[] decode Base64.getDecoder().decode(str);// 加密数据, 返回密文byte[] cipherBytes cipher.doFinal(decode);return new String(cipherBytes);} catch (Throwable e) {log.info(aes 解密异常 , e.getMessage());}return null;}/*** 生成密钥对象*/private static SecretKey generateAesKey(byte[] key) throws Exception {// 创建安全随机数生成器SecureRandom random SecureRandom.getInstance(SHA1PRNG);// 设置 密钥key的字节数组 作为安全随机数生成器的种子random.setSeed(key);// 创建 AES算法生成器KeyGenerator gen KeyGenerator.getInstance(AES);// 初始化算法生成器gen.init(128, random);// 生成 AES密钥对象, 也可以直接创建密钥对象: return new SecretKeySpec(key, ALGORITHM);return gen.generateKey();} /**-------------------------- base64加密 ----------------------------------*//*** base64加密** param key* return*/public static String base64Encode(byte[] key) {String result Base64.getEncoder().encodeToString(key);return result;}/*** base64解密** param key* return*/public static byte[] base64DecodeB(String key) {byte[] result null;result Base64.getDecoder().decode(key);return result;}/*** 是否被base64加密过** param str* return*/public static boolean isBase64(String str) {if (str null || str.trim().length() 0) {return false;} else {if (str.length() % 4 ! 0) {return false;}char[] strChars str.toCharArray();for (char c : strChars) {if ((c a c z) || (c A c Z) || (c 0 c 9) || c || c / || c ) {continue;} else {return false;}}return true;}} /**-------------------------- 对称加密des ----------------------------------*//*** des加密** param datasource* param password* return*/public static String desEncrypt(String datasource, String password) {try {SecureRandom random new SecureRandom();DESKeySpec desKey new DESKeySpec(password.getBytes());// 创建一个密匙工厂然后用它把DESKeySpec转换成SecretKeyFactory keyFactory SecretKeyFactory.getInstance(DES);SecretKey securekey keyFactory.generateSecret(desKey);// Cipher对象实际完成加密操作Cipher cipher Cipher.getInstance(DES);// 用密匙初始化Cipher对象cipher.init(Cipher.ENCRYPT_MODE, securekey, random);// 现在获取数据并加密// 正式执行加密操作return base64Encode(cipher.doFinal(datasource.getBytes()));} catch (Throwable e) {log.info(des 加密异常, e.getMessage());}return null;}/*** des 解密** param src* param password* return* throws Exception*/public static String desDecrypt(String src, String password) {try {// DES算法要求有一个可信任的随机数源SecureRandom random new SecureRandom();// 创建一个DESKeySpec对象DESKeySpec desKey new DESKeySpec(password.getBytes(UTF-8));// 创建一个密匙工厂SecretKeyFactory keyFactory SecretKeyFactory.getInstance(DES);// 将DESKeySpec对象转换成SecretKey对象SecretKey securekey keyFactory.generateSecret(desKey);// Cipher对象实际完成解密操作Cipher cipher Cipher.getInstance(DES);// 用密匙初始化Cipher对象cipher.init(Cipher.DECRYPT_MODE, securekey, random);// 真正开始解密操作return new String(cipher.doFinal(base64DecodeB(src)));} catch (Throwable e) {log.info(des 解密异常, e.getMessage());}return null;} /**-------------------------- 非对称加密RSA ----------------------------------*//*** 随机生成RSA密钥对** return privateKey, publicKey* throws NoSuchAlgorithmException*/public static MapString, String genRSAKeyPair() throws NoSuchAlgorithmException {// KeyPairGenerator类用于生成公钥和私钥对基于RSA算法生成对象KeyPairGenerator keyPairGen KeyPairGenerator.getInstance(RSA);// 初始化密钥对生成器密钥大小为96-1024位keyPairGen.initialize(1024, new SecureRandom());// 生成一个密钥对保存在keyPair中KeyPair keyPair keyPairGen.generateKeyPair();// 得到私钥RSAPrivateKey privateKey (RSAPrivateKey) keyPair.getPrivate();// 得到公钥RSAPublicKey publicKey (RSAPublicKey) keyPair.getPublic();String publicKeyString base64Encode(publicKey.getEncoded());// 得到私钥字符串String privateKeyString base64Encode(privateKey.getEncoded());// 将公钥和私钥保存到MapMapString, String result new HashMapString, String();result.put(publicKey, publicKeyString.replaceAll(\n, ).replace(\r, ).trim());result.put(privateKey, privateKeyString.replaceAll(\n, ).replace(\r, ).trim());return result;}/*** rsa 加密** param str* param publicKey* return* throws Exception*/public static String rsaEncrypt(String str, String publicKey) throws Exception {//base64编码的公钥byte[] decoded base64DecodeB(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 base64Encode(cipher.doFinal(str.getBytes(UTF-8)));return outStr;}/*** rsa解密** param str* param privateKey* return* throws Exception*/public static String rsaDecrypt(String str, String privateKey) throws Exception {//64位解码加密后的字符串byte[] inputByte base64DecodeB(str);//base64编码的私钥byte[] decoded base64DecodeB(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;}} 2.2 测试 1、生成公钥私钥 2、用公钥加密、私钥解密 Testvoid rsaTest() throws Exception {//生成公钥私钥MapString, String keys EncryptUtils.genRSAKeyPair();String publicKey keys.get(publicKey);String privateKey keys.get(privateKey);System.out.println(publicKey);System.out.println(privateKey);MapString, java.io.Serializable map new HashMap(2);map.put(username, xiamaofa);map.put(timestamp, 111111111);//公钥加密String encrypt EncryptUtils.rsaEncrypt(map.toString(), publicKey);//私钥解密String decrypt EncryptUtils.rsaDecrypt(encrypt, privateKey);System.out.println(encrypt);System.out.println(decrypt);}MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtzSxX6dlQZoF9nH6zC8pffKAdzZTa8DuJ5a3Vvp5B6zRgRObF234Za2FpAjiC8MMVKHekXfhxZhRROTB1POsGS0lyRJoBbYRbouLNXKkP9wCsMRl4wbkM4wc4A1uFmnxQKm66VUV7ZxNXKh6ID/N/atkEriNCFiBYWzC6wIDAQAB MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAK3NLFfp2VBmgX2cfrMLyl98oB3NlNrwO4nlrdWnkHr7NGBE5sXbfhlrYWkCOILwwxUod6RdHFmFFE5MH7U86wZLSXJH4mgFthFv6i74s1cqQ/3AKwxGXjBuQzjBzgDW4WafFAqbrpVRXtnE1cqHogP839q2QSuI0IWIFhbMLrAgMBAAECgYArKc1deAI0aYC3RWph5Qe5dyX8wNW7GfZvZM8rSk/bZ1BFJ51K4yK4kefqTLa4DNu/8DTTJaV0OLJ/XHDDjDtfqzTsWzaHhhTbrqhw0NfZ7YcxSzMQmiEyC35pAY420Ba1vILyeHBZm7z3I2qhhmCrGImDLMiHJaqgAcJarmYQJBAPp1zD4mZuehg0t8T8UUcASn7f0t1RFwU5d6wa9DaxS1AWgK4Yj0v0scGlD50dMI5xWWnWjHrR1jz/qyYskCIUCQQCxpU3jzMkYjKZTksObuNZG62agPIWFUdL6mWT4Bp9kRzAb3Fen4r/iJFVv/0/OhYDF29Q/T7gHuAgmJCjCvAkAEkR9PRs37jUNinfqqYkwEmbdKNYq8DatKHmZJsirMqJn7HEeO45pWSXgnQzi1YRsJH734hSfrLHWXOcXBBsAtAkEAoPWLho1F5FWEWxMO46jtljFyUhzlvLaY/CMs2Hjk58M1DvOrADaE5Zh0iulST7NimJClIQjYx4jO/M2hwCaYhwJAVzgz6a9DKv7KctpaBu/l8EJtoY8C1iBVQ4QxfB3HxmMO01InjZf7lE1FIuYFjIIRwdiCStFN0NyMJnC27/Dmg cmjRObvz0bPW5TSRTVSbLnQdyI0ITWHGiTErf8ufepnscpHsOr8ax2wmSIHsKBb6r0ysD0dcWV4I1R02rqmdSoPc/JlT4V6yhQ20ZlumiSZ8GInrN3aQ8exmQp3f8Sh10mmTOwtMmLS8VdHutAEThn26b87jJ6R4e82uS4k {usernamexiamaofa, timestamp111111111}
http://www.dnsts.com.cn/news/34236.html

相关文章:

  • 中国石油天然气第六建设公司网站asp源码下载网站
  • 温州网站建设的公司云浮网站建设咨询
  • 泉州网站seowordpress评论cdn刷新
  • 免费个人网站在线制作.net做网站c#
  • 手把手教你做网站视频明年房价走势最新消息
  • 婚纱设计网站标识设计图片
  • 保定免费做网站万网在线
  • 石家庄 科技 公司 网站建设wordpress twenty eleven
  • 广东智能网站建设质量保障wordpress 怎么读
  • 江苏建设管理中心网站浙江住房城乡建设厅网站
  • 南宁市网站设计网络关键词优化方法
  • 微信网站制作流量型网站
  • 如何选择网站项目知乎 wordpress主题
  • 免费建网站 建站之星静海网站建设
  • 网站域名 空间申请表河北最近发生了什么事
  • 单位网站建设要多少钱网站建设分为几类
  • 网站寄生虫怎么做网站备案法规
  • 网站 利润asp.net+网站开发+实战
  • 昆明网站建设报价wordpress搬家换域名不换服务器
  • 购物网站支付功能怎么做seo一个月工资一般多少
  • 网站设计怎么做ppt答辩wordpress后台网址
  • 外贸免费开发网站模板自驾游黄山风景区旅游攻略
  • 网站开发app手机网上银行
  • 外包公司做的网站wordpress标签云添加图片
  • 品牌形象成都百度推广排名优化
  • 24淘宝网站建设宁波网站建设网络推广
  • 做微信平台网站个人网站如果做
  • 什么样的网站做百度广告好网站ip解析
  • 鞍山建立公司网站的步骤建设网站一般流程
  • 萍乡企业网站制作住房城乡建设网站官网入口