赞
踩
本文已收录于专栏
《运维》
目录
为了保障数据隐私安全,大多企业在存储和传输过程中,通常会对数据进行加密处理,在进行数据交互和共享时,将数据中的敏感信息如个人身份信息进行脱敏或匿名化处理要进行加密监管。所谓数据加密技术,是指将一个信息(或称明文,plain text)经过加密钥匙及加密函数转换,变成无意义的密文,而接收方则将此密文经过解密函数、解密钥匙还原成明文。
不可逆加密是指通过数据计算加密后的结果,但是通过结果无法计算出加密的数据,简单来说就是对于一些数据加密之后会产生另一个结果,结果不可以根据加密的过程反推出数据,只能通过产生的结果和你知道的结果进行匹配,看看是否一致。
包括文档、音视频文件、软件安装包等用新老摘要对比是否一样
密码加密后存到数据库中
- import java.security.MessageDigest;
- import java.security.NoSuchAlgorithmException;
-
- public class HashingExample {
- public static void main(String[] args) throws NoSuchAlgorithmException {
- String input = "Hello World";
-
- MessageDigest md = MessageDigest.getInstance("SHA-256");
- byte[] hash = md.digest(input.getBytes());
-
- StringBuilder sb = new StringBuilder();
- for (byte b : hash) {
- sb.append(String.format("%02x", b));
- }
-
- String hashedValue = sb.toString();
- System.out.println("Hashed Value: " + hashedValue);
- }
- }
对称加密也称为单密钥加密是指加密和解密的过程使用同一个密钥进行。简单来说就是发送数据者把数据用密钥进行加密,接收数据者用同样的密钥就可以得到加密之前的数据。
优点:生成密钥的算法公开、计算量小、加密速度快、加密效率高、密钥较短
缺点:双方共同的密钥,有一方密钥被窃取,双方都影响
登录信息用户名和密码加密、传输加密、指令加密
- import javax.crypto.Cipher;
- import javax.crypto.KeyGenerator;
- import javax.crypto.SecretKey;
- import javax.crypto.spec.SecretKeySpec;
- import java.util.Base64;
-
- public class SymmetricEncryptionExample {
- public static void main(String[] args) throws Exception {
- String input = "Hello World";
-
- // 生成密钥
- KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
- keyGenerator.init(128);
- SecretKey secretKey = keyGenerator.generateKey();
-
- // 加密
- Cipher cipher = Cipher.getInstance("AES");
- cipher.init(Cipher.ENCRYPT_MODE, secretKey);
- byte[] encryptedBytes = cipher.doFinal(input.getBytes());
- String encryptedValue = Base64.getEncoder().encodeToString(encryptedBytes);
- System.out.println("Encrypted Value: " + encryptedValue);
-
- // 解密
- cipher.init(Cipher.DECRYPT_MODE, secretKey);
- byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedValue));
- String decryptedValue = new String(decryptedBytes);
- System.out.println("Decrypted Value: " + decryptedValue);
- }
- }
非对称加密算法需要两个密钥:公开密钥和私有密钥。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥。简单来说就是甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。
优点:安全系数比较高
缺点:加解密相对速度慢、密钥长、计算量大、效率低
CRS请求证书、蓝牙等硬件信息加密配对传输、关键 的登录信息验证。
- import javax.crypto.Cipher;
- import java.security.KeyPair;
- import java.security.KeyPairGenerator;
- import java.security.PrivateKey;
- import java.security.PublicKey;
- import java.util.Base64;
-
- public class AsymmetricEncryptionExample {
- public static void main(String[] args) throws Exception {
- String input = "Hello World";
-
- // 生成密钥对
- KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
- keyPairGenerator.initialize(2048);
- KeyPair keyPair = keyPairGenerator.generateKeyPair();
- PublicKey publicKey = keyPair.getPublic();
- PrivateKey privateKey = keyPair.getPrivate();
-
- // 加密
- Cipher cipher = Cipher.getInstance("RSA");
- cipher.init(Cipher.ENCRYPT_MODE, publicKey);
- byte[] encryptedBytes = cipher.doFinal(input.getBytes());
- String encryptedValue = Base64.getEncoder().encodeToString(encryptedBytes);
- System.out.println("Encrypted Value: " + encryptedValue);
-
- // 解密
- cipher.init(Cipher.DECRYPT_MODE, privateKey);
- byte[] decryptedBytes = cipher.doFinal(Base64.getDecoder().decode(encryptedValue));
- String decryptedValue = new String(decryptedBytes);
- System.out.println("Decrypted Value: " + decryptedValue);
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。