相关疑难解决方法(0)

C#SHA-1与PHP SHA-1 ...不同的结果?

我试图从一个字符串计算一个SHA-1哈希,但是当我使用php的sha1函数计算字符串时,我得到的东西比我在C#中尝试时有所不同.我需要C#来计算与PHP相同的字符串(因为php中的字符串是由我无法修改的第三方计算的).如何让C#生成与PHP相同的哈希?谢谢!!!

String = s934kladfklada@a.com

C#代码(生成d32954053ee93985f5c3ca2583145668bb7ade86)

        string encode = secretkey + email;
        UnicodeEncoding UE = new UnicodeEncoding();
        byte[] HashValue, MessageBytes = UE.GetBytes(encode);
        SHA1Managed SHhash = new SHA1Managed();
        string strHex = "";

        HashValue = SHhash.ComputeHash(MessageBytes);
        foreach(byte b in HashValue) {
            strHex += String.Format("{0:x2}", b);
        }
Run Code Online (Sandbox Code Playgroud)

PHP代码(生成a9410edeaf75222d7b576c1b23ca0a9af0dffa98)

sha1();
Run Code Online (Sandbox Code Playgroud)

php c# cryptography sha1 cryptographic-hash-function

35
推荐指数
3
解决办法
2万
查看次数

php sha1不等于java sha1

可能重复:
Java的MessageDigest SHA1算法返回的结果与php的SHA1函数不同

我用的是什么:

Java的:

public String sha1(String s) {
    try {
        // Create MD5 Hash
        MessageDigest digest = java.security.MessageDigest.getInstance("SHA-1");
        digest.update(s.getBytes());
        byte messageDigest[] = digest.digest();

        // Create Hex String
        StringBuffer hexString = new StringBuffer();
        for (int i = 0; i < messageDigest.length; i++)
            hexString.append(Integer.toHexString(0xFF & messageDigest[i]));
        return hexString.toString();

    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return "";
}
Run Code Online (Sandbox Code Playgroud)

结果:

java: System.out.println(sha1("foobar123dsadn23u1wdqqwdyxdasd"));
php:                echo sha1('foobar123dsadn23u1wdqqwdyxdasd');

php:  d8033103e9aaf67af13a4b45534b2d0f6d8dfded
java: d83313e9aaf67af13a4b45534b2df6d8dfded
Run Code Online (Sandbox Code Playgroud)

为什么两个哈希不一样?

php java hash sha1 equality

1
推荐指数
1
解决办法
3814
查看次数