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(); 
}