-2
下面是我为SHA加密写的代码。但是这编译,给出了一个例外SHA加密不起作用
java.security.NoSuchAlgorithmException:SHA SecretKeyFactory不可
请有人帮助解决这个问题?其实我并不熟悉加密技术。
代码:
public String encrypt(String password)
{
try
{
KeySpec ks=new PBEKeySpec(password.toCharArray());
SecretKeyFactory skf=SecretKeyFactory.getInstance(algo);
SecretKey key=skf.generateSecret(ks);
MessageDigest md=MessageDigest.getInstance("SHA-256");
md.update(password.getBytes());
byte[] digest=md.digest();
byte[] salt=Arrays.copyOf(digest, 16);
AlgorithmParameterSpec aps=new PBEParameterSpec(salt, 20);
Cipher cipher=Cipher.getInstance(algo);
cipher.init(Cipher.ENCRYPT_MODE, key, aps);
}
catch(Exception e)
{
e.printStackTrace();
}
return password;
}
@Override
public String decrypt(String password)
{
try
{
KeySpec ks=new PBEKeySpec(password.toCharArray());
SecretKeyFactory skf=SecretKeyFactory.getInstance(algo);
SecretKey key=skf.generateSecret(ks);
MessageDigest md=MessageDigest.getInstance("SHA-256");
md.update(password.getBytes());
byte[] digest=md.digest();
byte[] salt=Arrays.copyOf(digest, 16);
AlgorithmParameterSpec aps=new PBEParameterSpec(salt, 20);
Cipher cipher=Cipher.getInstance(algo);
cipher.init(Cipher.DECRYPT_MODE, key, aps);
}
catch(Exception e)
{
e.printStackTrace();
}
return password;
}
SHA-2没有加密。这是一个散列,因此不提供有效的逆操作。 – CodesInChaos 2013-05-01 12:02:25
那么有什么其他的方式来使用SHA和decrpyt加密一个字符串 – Gapchoos 2013-05-01 12:03:19
你能描述一下你的代码应该做什么吗?这没什么意义。变量名称表明你想散列一个与加密完全不同的密码。你应该描述你真正的问题,而不是以错误的方式解决问题的前半部分后的剩余问题。 – CodesInChaos 2013-05-01 12:03:31