Java 如何通过传递密钥使用sha-1加密字符串?
我正在尝试加密一条字符串消息,以便在我的应用程序中为同一条字符串消息获取相同的加密代码。如何使用相同的密钥获得相同的加密代码 下面是我的代码。它正在生成加密代码,但与服务器上生成的代码不匹配Java 如何通过传递密钥使用sha-1加密字符串?,java,android,sha1,Java,Android,Sha1,我正在尝试加密一条字符串消息,以便在我的应用程序中为同一条字符串消息获取相同的加密代码。如何使用相同的密钥获得相同的加密代码 下面是我的代码。它正在生成加密代码,但与服务器上生成的代码不匹配 public String SHAsum(String convertme) { MessageDigest md = null; byte[] data; try { md = MessageDigest.getIns
public String SHAsum(String convertme) {
MessageDigest md = null;
byte[] data;
try {
md = MessageDigest.getInstance("SHA-1");
data=convertme.getBytes("utf8");
md.update(data);
md.hashCode();
//md.update( key.getBytes() );
return new BigInteger( 1, md.digest() ).toString(16);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //This could also be SHA1withDSA, no exception handling
catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
散列一般不称为加密,因为不能解密散列。这是密码学,但通常加密是双向的。您是否有一个示例,说明您的代码为特定字符串生成了什么,以及服务器向您显示了什么?如果出现问题,你真的想返回吗?实际上,用户密码以sha-1哈希的形式存在于php服务器中,我想这样做,在我的应用程序中,如果有人输入密码,那么它将使用相同的盐转换为sha-1哈希,但哈希后我无法获得相同的哈希代码……好吧。。。但您能给出输入和服务器输出的示例吗?例如,PHP代码中可能有一个bug。我们可以很容易地用其他工具来测试,看看哪个输出是正确的;byte[]salt=guVoUubWwvniR2G0FgaC9.getBytes;字符串abc=;请尝试{abc=getHash password,salt;System.out.printlencypted password为------->+abc;}捕获NoSuchAlgorithmException e1{//TODO自动生成的捕获块e1.printStackTrace;}捕获不受支持的编码异常e1{//TODO自动生成的捕获块e1.printStackTrace;}公共字符串getHashString密码,字节[]salt抛出NoSuchAlgorithmException,UnsupportedEncodingException{MessageDigest digest=MessageDigest.getInstanceSHA-1;digest.reset;digest.updatepassword.getBytes;digest.updatesalt;返回新的BigInteger 1,digest.digest.toString 16.toString;//返回digest.digestpassword.getBytesUTF-8;}散列通常不是加密,因为你不能解密散列。它是加密,但通常加密是双向的。你有没有一个例子,说明你的代码为特定字符串生成了什么,而服务器向你显示了什么?如果出现问题,你真的想返回吗?实际上,用户密码存在于sha-1散列的形式,我想这样做,在我的应用程序中,如果有人输入密码,它将被转换为sha-1散列使用相同的盐,但我无法得到相同的散列代码后散列…好的…但你能给出示例输入和服务器输出吗?可能有一个错误在PHP代码的例子。我们可以很容易地尝试与其他工具查看哪个输出是正确的。字符串password=qqqqq;byte[]salt=guVoUubWwvniR2G0FgaC9.getBytes;字符串abc=;尝试{abc=getHash password,salt;System.out.printlEncypted password是------->+abc;}catch nosuchalgorithException e1{//TODO自动生成的catch块e1.printStackTrace;}catch UnsupportedEncodingException e1{//TODO自动生成的catch块e1.printStackTrace;}公共字符串getHashString密码,字节[]salt抛出NoSuchAlgorithmException,UnsupportedEncodingException{MessageDigest digest=MessageDigest.getInstanceSHA-1;digest.reset;digest.updatepassword.getBytes;digest.updatesalt;返回新的BigInteger 1,digest.digest.toString 16.toString;//返回digest.digestpassword.getBytesUTF-8;}
String password="qqqqq";
byte[] salt="guVoUubWwvniR2G0FgaC9".getBytes();
String abc="";
try
{
abc = getHash( password, salt);
System.out.println("Encypted password is -------------->"+abc);
}
catch (NoSuchAlgorithmException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}
catch (UnsupportedEncodingException e1)
{
// TODO Auto-generated catch block
e1.printStackTrace();
}