易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
软件资源
软件开发
、
小程序制作
、
系统集成与运维
、
空间租用
、
硬件开发
、
视频监控
、
技术咨询与支持
——联系电话:0311-88999002/88999003
首页
/
操作系统
/
Linux
/
Android 加密解密字符串
Android 加密解密字符串:
package
eoe.demo;
import
java.security.SecureRandom;
import
javax.crypto.Cipher;
import
javax.crypto.KeyGenerator;
import
javax.crypto.SecretKey;
import
javax.crypto.spec.SecretKeySpec;
/**
* Usage:
* <pre>
* String crypto = SimpleCrypto.encrypt(masterpassword, cleartext)
* ...
* String cleartext = SimpleCrypto.decrypt(masterpassword, crypto)
* </pre>
* @author ferenc.hechler
*/
public
class
SimpleCrypto {
public
static
String encrypt(String seed, String cleartext)
throws
Exception {
byte
[] rawKey = getRawKey(seed.getBytes());
byte
[] result = encrypt(rawKey, cleartext.getBytes());
return
toHex(result);
}
public
static
String decrypt(String seed, String encrypted)
throws
Exception {
byte
[] rawKey = getRawKey(seed.getBytes());
byte
[] enc = toByte(encrypted);
byte
[] result = decrypt(rawKey, enc);
return
new
String(result);
}
private
static
byte
[] getRawKey(
byte
[] seed)
throws
Exception {
KeyGenerator kgen = KeyGenerator.getInstance(
"AES"
);
SecureRandom sr = SecureRandom.getInstance(
"SHA1PRNG"
);
sr.setSeed(seed);
kgen.init(
128
, sr);
// 192 and 256 bits may not be available
SecretKey skey = kgen.generateKey();
byte
[] raw = skey.getEncoded();
return
raw;
}
private
static
byte
[] encrypt(
byte
[] raw,
byte
[] clear)
throws
Exception {
SecretKeySpec skeySpec =
new
SecretKeySpec(raw,
"AES"
);
Cipher cipher = Cipher.getInstance(
"AES"
);
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte
[] encrypted = cipher.doFinal(clear);
return
encrypted;
}
private
static
byte
[] decrypt(
byte
[] raw,
byte
[] encrypted)
throws
Exception {
SecretKeySpec skeySpec =
new
SecretKeySpec(raw,
"AES"
);
Cipher cipher = Cipher.getInstance(
"AES"
);
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte
[] decrypted = cipher.doFinal(encrypted);
return
decrypted;
}
public
static
String toHex(String txt) {
return
toHex(txt.getBytes());
}
public
static
String fromHex(String hex) {
return
new
String(toByte(hex));
}
public
static
byte
[] toByte(String hexString) {
int
len = hexString.length()/
2
;
byte
[] result =
new
byte
[len];
for
(
int
i =
0
; i < len; i++)
result[i] = Integer.valueOf(hexString.substring(
2
*i,
2
*i+
2
),
16
).byteValue();
return
result;
}
public
static
String toHex(
byte
[] buf) {
if
(buf ==
null
)
return
""
;
StringBuffer result =
new
StringBuffer(
2
*buf.length);
for
(
int
i =
0
; i < buf.length; i++) {
appendHex(result, buf[i]);
}
return
result.toString();
}
private
final
static
String HEX =
"0123456789ABCDEF"
;
private
static
void
appendHex(StringBuffer sb,
byte
b) {
sb.append(HEX.charAt((b>>
4
)&
0x0f
)).append(HEX.charAt(b&
0x0f
));
}
}
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图