网站开发设计师岗位职责,网站建设对我有什么好处,wordpress 宠物,WordPress主题get文章目录 一、对称加密算法AES1. AES简介2. AES代码 二、非对称加密RSA1. RSA简介2. 生成公钥私钥3. RSA代码 一、对称加密算法AES
1. AES简介
对称加密算法AES是目前广泛使用的一种加密技术#xff0c;它采用相同的密钥来进行数据的加密和解密。
AES的优点
高效性#x… 文章目录 一、对称加密算法AES1. AES简介2. AES代码 二、非对称加密RSA1. RSA简介2. 生成公钥私钥3. RSA代码 一、对称加密算法AES
1. AES简介
对称加密算法AES是目前广泛使用的一种加密技术它采用相同的密钥来进行数据的加密和解密。
AES的优点
高效性AES在多种平台上都具有很好的性能能够快速加密和解密数据。安全性AES被认为是一个非常安全的加密标准。灵活性支持多种密钥长度可以根据不同的安全需求选择合适的密钥。
AES的注意事项
密钥管理由于AES使用的是对称密钥因此密钥的安全存储和分发至关重要。填充方式在加密过程中需要对数据块进行填充以使其符合块大小要求常用的填充方式有PKCS、CBC等。初始化向量在某些AES模式下如CBC模式需要使用IV来增加加密的随机性。
2. AES代码
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;/*** AES 加密和解密*/
public class AesTest {// 秘钥private static String KEY aaccB1123Mopac31;// 向量private static String IV CdmccsaCCcdsADf;/*** 加密* param content 待加密内容* */public static String encrypt(String content) throws Exception {Cipher cipher Cipher.getInstance(AES/CBC/PKCS5Padding);SecretKeySpec secretKeySpec new SecretKeySpec(KEY.getBytes(StandardCharsets.UTF_8), AES);cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, new IvParameterSpec(IV.getBytes(StandardCharsets.UTF_8)));return Base64.getEncoder().encodeToString(cipher.doFinal(content.getBytes(StandardCharsets.UTF_8)));}/*** 解密* param content 加密内容* */public static String decrypt(String content) throws Exception {Cipher cipher Cipher.getInstance(AES/CBC/PKCS5Padding);SecretKeySpec secretKeySpec new SecretKeySpec(KEY.getBytes(StandardCharsets.UTF_8), AES);cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, new IvParameterSpec(IV.getBytes(StandardCharsets.UTF_8)));byte[] decryptedBytes cipher.doFinal(Base64.getDecoder().decode(content));return new String(decryptedBytes, StandardCharsets.UTF_8);}public static void main(String[] args) throws Exception {String text 加密内容;String encryptText encrypt(text);System.out.println(加密后内容 encryptText);System.out.println(解密后内容 decrypt(encryptText));}
}效果
二、非对称加密RSA
1. RSA简介
RSA是一种非对称加密算法使用一对公钥和私钥来进行加密和解密操作公钥用于加密数据私钥用于解密数据。
RSA的优点
安全性RSA基于大数因子分解难题被认为是一种非常安全的加密算法。灵活性RSA支持不同的密钥长度可以根据需要选择适合的密钥长度来平衡安全性和性能。数字签名RSA算法可以用于生成和验证数字签名提供数据的完整性和身份验证功能。
RSA的注意事项
密钥长度选择合适的密钥长度非常重要常见的密钥长度有1024位、2048位等长度越长安全性越高。安全存储私钥需要严格保密确保私钥不被泄露否则将导致加密数据的泄露。性能RSA加密和解密的性能相对较低需要注意在大量数据加密时可能会影响性能。
加密场景
A生成一对密钥公钥、私钥B使用公钥对消息进行加密A使用私钥对消息进行解密
验签场景
A生成一对密钥公钥、私钥A使用私钥对消息进行签名B使用私公钥对消息内容和消息签名进行验签
2. 生成公钥私钥
生成1024位的RSA私钥
openssl genrsa -out private.key 1024使用私钥生成公钥
openssl rsa -in private.key -pubout -out public.key使用公钥加密
openssl pkeyutl -encrypt -pubin -inkey public.key -in test.txt -out test.encrypt使用私钥解密
openssl pkeyutl -decrypt -inkey private.key -in test.encrypt -out test.decrypt使用私钥签名
openssl pkeyutl -sign -inkey private.key -in test.txt -out test.sign使用公钥恢复签名数据
openssl pkeyutl -verifyrecover -pubin -inkey public.key -in test.sign -out test.verify使用公钥验签
openssl pkeyutl -verify -in test.txt -sigfile test.sign -pubin -inkey public.key3. RSA代码
import javax.crypto.Cipher;
import java.util.Base64;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;/*** RSA 加密解密和签名验签*/
public class RsaTest {// 公钥private static String PUBLIC_KEY MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHDYWXIMltIzia0lrxm1dJu96 QkogDVLsaFXxnjCZl72evCU0CAlWGDPc3gzJYFNw1KZvNRuTTiKbGa0enFc8hDoG Sjg37Na8OqMzLZZ/N6/DCAUywk1JNhMfYDr0GSYNgV37NXWvKD3rbvfxCkoH3ojn B3zUgr31VQfryzXqQIDAQAB;// 私钥private static String PRIVATE_KEY MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAMcNhZcgyW0j7OJr SWvGbV0m73pCSiANUuxoVfGeMJmXvZ68JTQICVYYM9zeDMlgU3DUpm81G5NOIpsZ rR6cVzyEOgZKODfs1rw6ozMtln83r8MIBTLCTUk2Ex9gOvQZJg2BXfs1da8oPetu 9/EKSgfeiOcHfNSCvfVVBvLNer5AgMBAAECgYBNTSADJ9VxkBEPgRC7TQztrxAz T4kP13zLmF0//unqy/X0riZYhYJyrV8MbOPhNwCpmKYL2ytERv5VchYaeiqRBsQ vVqVhz5oBGmVxyrHsfiRl4F3vUA/qeewmNl/rFTxXBH5T3J0SzppSD6Z9gdPiy wl51futFqggqbiH/QJBAP9ETAFqKM5pW2KHhNbeKwxc2e0y3fvxAEfFKD6GakT d38QMTULN6kmZl3vhJXSxY/Xt8OjZVOvOTWj4yoqXycCQQDHnO9viCin1HGtv1W LIMxYFIj3m3CgE2RltgVErmxS5Jo3bh86UFk8t/JRRhatpxKaPBlOzN4WsmbkW b7jfAkAWuTOy5l2Iujb5u1PWEUx6t6Q4VSXPtW5TUzr44YqrPGpky0I2IJuB2UM/ lXTOCYdAuMlJByCcBHspRTRn1f9AkEAibZAqxXtd6KHDJoSXI9qlfaH09zQnqoV OfcBdIvR/C9NBlnxWmD1l8pkmR7vxul63gVejc5kkX8dBXwq1lKOawJBAKeVg9VB hj7WkjgoIVnuI8CIrO6IpboSySV/CZalkyNNVRWq2rOJbpIHe4baXqPomZ8mFEA 4SGoEW3AiyFiqb8;/*** 实例化公钥* param publicKey 公钥*/public static PublicKey getPublicKey(String publicKey) throws Exception {byte[] publicKeyBytes Base64.getDecoder().decode(publicKey.getBytes());X509EncodedKeySpec keySpec new X509EncodedKeySpec(publicKeyBytes);KeyFactory keyFactory KeyFactory.getInstance(RSA);return keyFactory.generatePublic(keySpec);}/*** 实例化私钥* param privateKey 私钥*/public static PrivateKey getPrivateKey(String privateKey) throws Exception {byte[] privateKeyBytes Base64.getDecoder().decode(privateKey.getBytes());PKCS8EncodedKeySpec keySpec new PKCS8EncodedKeySpec(privateKeyBytes);KeyFactory keyFactory KeyFactory.getInstance(RSA);return keyFactory.generatePrivate(keySpec);}/*** 公钥加密* param content 待加密内容*/public static String encrypt(String content, String publicKey) throws Exception {Cipher cipher Cipher.getInstance(RSA);cipher.init(Cipher.ENCRYPT_MODE, getPublicKey(publicKey));return new String(Base64.getEncoder().encode(cipher.doFinal(content.getBytes(UTF-8))));}/*** 私钥解密* param content 加密内容*/public static String decrypt(String content, String privateKey) throws Exception {Cipher cipher Cipher.getInstance(RSA);cipher.init(Cipher.DECRYPT_MODE, getPrivateKey(privateKey));return new String(cipher.doFinal(Base64.getDecoder().decode(content)));}/*** 私钥签名* param content 待签名内容*/public static String sign(String content, String privateKey) throws Exception {Signature signature Signature.getInstance(SHA1WithRSA);signature.initSign(getPrivateKey(privateKey));signature.update(content.getBytes(UTF-8));return new String(Base64.getEncoder().encode(signature.sign()));}/*** 公钥验签* param content 原始内容* param sign 签名内容*/public static boolean verify(String content, String sign, String publicKey) throws Exception {Signature signature Signature.getInstance(SHA1WithRSA);signature.initVerify(getPublicKey(publicKey));signature.update(content.getBytes(UTF-8));return signature.verify(Base64.getDecoder().decode(sign));}public static void main(String[] args) throws Exception {String content 消息内容;String encrypt encrypt(content,PUBLIC_KEY);System.out.println(encrypt);String decryp decrypt(encrypt,PRIVATE_KEY);System.out.println(decryp);String sign sign(content,PRIVATE_KEY);System.out.println(sign);boolean verify verify(content,sign,PUBLIC_KEY);System.out.println(verify);}
}效果 文章转载自: http://www.morning.jksgy.cn.gov.cn.jksgy.cn http://www.morning.nnwpz.cn.gov.cn.nnwpz.cn http://www.morning.pxbky.cn.gov.cn.pxbky.cn http://www.morning.njstzsh.com.gov.cn.njstzsh.com http://www.morning.dnbhd.cn.gov.cn.dnbhd.cn http://www.morning.dxzcr.cn.gov.cn.dxzcr.cn http://www.morning.jopebe.cn.gov.cn.jopebe.cn http://www.morning.krlsz.cn.gov.cn.krlsz.cn http://www.morning.qymqh.cn.gov.cn.qymqh.cn http://www.morning.qqklk.cn.gov.cn.qqklk.cn http://www.morning.tntqr.cn.gov.cn.tntqr.cn http://www.morning.mwhqd.cn.gov.cn.mwhqd.cn http://www.morning.stwxr.cn.gov.cn.stwxr.cn http://www.morning.pqrhb.cn.gov.cn.pqrhb.cn http://www.morning.lbcbq.cn.gov.cn.lbcbq.cn http://www.morning.wnkqt.cn.gov.cn.wnkqt.cn http://www.morning.rszyf.cn.gov.cn.rszyf.cn http://www.morning.zrgx.cn.gov.cn.zrgx.cn http://www.morning.sjwiki.com.gov.cn.sjwiki.com http://www.morning.rdtp.cn.gov.cn.rdtp.cn http://www.morning.wnjsp.cn.gov.cn.wnjsp.cn http://www.morning.sjgsh.cn.gov.cn.sjgsh.cn http://www.morning.bpmnl.cn.gov.cn.bpmnl.cn http://www.morning.zwtp.cn.gov.cn.zwtp.cn http://www.morning.wjhqd.cn.gov.cn.wjhqd.cn http://www.morning.zhishizf.cn.gov.cn.zhishizf.cn http://www.morning.xfmzk.cn.gov.cn.xfmzk.cn http://www.morning.ctqlq.cn.gov.cn.ctqlq.cn http://www.morning.jkfyt.cn.gov.cn.jkfyt.cn http://www.morning.jmbgl.cn.gov.cn.jmbgl.cn http://www.morning.nxpqw.cn.gov.cn.nxpqw.cn http://www.morning.bby45.cn.gov.cn.bby45.cn http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn http://www.morning.wklhn.cn.gov.cn.wklhn.cn http://www.morning.rxgnn.cn.gov.cn.rxgnn.cn http://www.morning.xfdkh.cn.gov.cn.xfdkh.cn http://www.morning.rqrxh.cn.gov.cn.rqrxh.cn http://www.morning.wfdlz.cn.gov.cn.wfdlz.cn http://www.morning.plqsc.cn.gov.cn.plqsc.cn http://www.morning.swkzr.cn.gov.cn.swkzr.cn http://www.morning.kyjyt.cn.gov.cn.kyjyt.cn http://www.morning.plgbh.cn.gov.cn.plgbh.cn http://www.morning.rxfjg.cn.gov.cn.rxfjg.cn http://www.morning.ypklb.cn.gov.cn.ypklb.cn http://www.morning.cnwpb.cn.gov.cn.cnwpb.cn http://www.morning.jxmjr.cn.gov.cn.jxmjr.cn http://www.morning.wbdm.cn.gov.cn.wbdm.cn http://www.morning.frfpx.cn.gov.cn.frfpx.cn http://www.morning.zlzpz.cn.gov.cn.zlzpz.cn http://www.morning.tgmfg.cn.gov.cn.tgmfg.cn http://www.morning.ppqzb.cn.gov.cn.ppqzb.cn http://www.morning.ltdxq.cn.gov.cn.ltdxq.cn http://www.morning.yrck.cn.gov.cn.yrck.cn http://www.morning.rjljb.cn.gov.cn.rjljb.cn http://www.morning.rrqgf.cn.gov.cn.rrqgf.cn http://www.morning.rshijie.com.gov.cn.rshijie.com http://www.morning.tntqr.cn.gov.cn.tntqr.cn http://www.morning.rsxw.cn.gov.cn.rsxw.cn http://www.morning.zqsnj.cn.gov.cn.zqsnj.cn http://www.morning.qxwwg.cn.gov.cn.qxwwg.cn http://www.morning.hqpyt.cn.gov.cn.hqpyt.cn http://www.morning.gswfs.cn.gov.cn.gswfs.cn http://www.morning.wfpmt.cn.gov.cn.wfpmt.cn http://www.morning.mjgxl.cn.gov.cn.mjgxl.cn http://www.morning.rqnzh.cn.gov.cn.rqnzh.cn http://www.morning.rxgnn.cn.gov.cn.rxgnn.cn http://www.morning.ychrn.cn.gov.cn.ychrn.cn http://www.morning.qgjxt.cn.gov.cn.qgjxt.cn http://www.morning.nhzxr.cn.gov.cn.nhzxr.cn http://www.morning.gswfs.cn.gov.cn.gswfs.cn http://www.morning.nsrtvu.com.gov.cn.nsrtvu.com http://www.morning.wknbc.cn.gov.cn.wknbc.cn http://www.morning.mxmtt.cn.gov.cn.mxmtt.cn http://www.morning.crrjg.cn.gov.cn.crrjg.cn http://www.morning.xqndf.cn.gov.cn.xqndf.cn http://www.morning.blxor.com.gov.cn.blxor.com http://www.morning.rbsxf.cn.gov.cn.rbsxf.cn http://www.morning.iqcge.com.gov.cn.iqcge.com http://www.morning.lxfqc.cn.gov.cn.lxfqc.cn http://www.morning.sxbgc.cn.gov.cn.sxbgc.cn