[英]Java simple encryption
查看Java Simplified Encryption(Jasypt) 。
Jasypt是一個java庫,它允許開發人員以最少的工作量為他/她的項目添加基本的加密功能,而無需深入了解密碼學的工作原理。
- 高安全性,基於標准的加密技術,適用於單向和雙向加密。 加密密碼,文本,數字,二進制文件......
- 與Hibernate透明集成。
- 適合集成到基於Spring的應用程序中,並且可以與ACEGI(Spring Security)透明地集成。
- 用於加密應用程序配置(即數據源)的集成功能。
- Open API,用於任何JCE提供程序。
- ...以及更多
我正在使用這個簡單的One-Time-Pad算法:
import org.apache.commons.codec.binary.Base64;
public class Cipher {
private static final String KEY = "some-secret-key-of-your-choice";
public String encrypt(final String text) {
return Base64.encodeBase64String(this.xor(text.getBytes()));
}
public String decrypt(final String hash) {
try {
return new String(this.xor(Base64.decodeBase64(hash.getBytes())), "UTF-8");
} catch (java.io.UnsupportedEncodingException ex) {
throw new IllegalStateException(ex);
}
}
private byte[] xor(final byte[] input) {
final byte[] output = new byte[input.length];
final byte[] secret = this.KEY.getBytes();
int spos = 0;
for (int pos = 0; pos < input.length; ++pos) {
output[pos] = (byte) (input[pos] ^ secret[spos]);
spos += 1;
if (spos >= secret.length) {
spos = 0;
}
}
return output;
}
不要忘記將commons-codec
添加到classpath。
ROT13怎么樣? 它可能是有史以來最簡單和最差的加密(它也被稱為Caeser的密碼)
以下是Jay Kominek在Java中的基本實現:
import java.io.*;
public class rot13 {
public static void main (String args[]) {
int abyte = 0;
try { while((abyte = System.in.read())>=0) {
int cap = abyte & 32;
abyte &= ~cap;
abyte = ((abyte >= 'A') && (abyte <= 'Z') ? ((abyte - 'A' + 13) % 26 + 'A') : abyte) | cap;
System.out.print(String.valueOf((char)abyte));
} } catch (IOException e) { }
System.out.flush();
}
}
如果您不想真正加密文本,為什么不用Base64進行編碼? 它看起來像廢話,而且很容易解碼。 另外,您已經在使用Base64代碼......
如果您要加密一段文本,那么一次性填充怎么辦? 一次性墊很容易創建; 您所需要的只是一個隨機的字節序列,其長度與您要加密的數據相同
請參閱如何在Java中使用3des加密/解密? BASE64Encoder
用於表示加密的字節數組,而不是實際的輸入。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.