java 加密解密艺术
时间: 2023-11-10 18:00:25 浏览: 44
Java加密解密艺术涉及到多种加密算法和技术。对于对称加密,可以使用流密码来进行加密和解密,这是一种简单实现且广泛应用于军事和外交部门的加密体制,并且也是手机应用平台中常用的加密手段。流密码将明文按字符逐位进行加密和解密。而在非对称加密系统中,通常使用复合加密场景,即先用对称加密对数据进行加密,然后再使用非对称加密对对称加密的密钥进行加密,以提高效率。此外,签名也是一种确保消息有效性的技术,对于消息本身来说并不需要加密,但可以在内层使用对称密码加密,然后再在外层进行加密和签名。
相关问题
java异或加密解密
Java中的异或加密解密可以使用位运算符^来实现。具体实现方法如下:
加密:
```java
public static String encrypt(String str, String key) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
sb.append((char) (str.charAt(i) ^ key.charAt(i % key.length())));
}
return sb.toString();
}
```
解密:
```java
public static String decrypt(String str, String key) {
return encrypt(str, key); // 异或加密解密是对称的,解密就是加密
}
```
其中,str是要加密/解密的字符串,key是密钥。
java rsa加密解密
Java中的RSA加密解密可以通过Java Cryptography Architecture (JCA)实现。以下是一个简单的示例代码:
```java
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
import javax.crypto.Cipher;
public class RSAExample {
public static void main(String[] args) throws Exception {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
// 生成公钥和私钥
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 明文
String plainText = "Hello, world!";
// 加密
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] cipherText = cipher.doFinal(plainText.getBytes());
// 解密
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedText = cipher.doFinal(cipherText);
System.out.println("明文: " + plainText);
System.out.println("加密后: " + new String(cipherText));
System.out.println("解密后: " + new String(decryptedText));
}
}
```