下面是我为 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;
}