SHA1签名算法,JAVA和C#

发布时间 2023-07-28 09:42:19作者: 筱老邪

java:

public static void main(String[] args) throws NoSuchAlgorithmException {
String token = "31a4a1aa-cffc-4aca-9ef6-0497edf7fbed";
String nonce = "Rzem0rlz19e6GZuZuFKyDzaxiS4baaqn8uvxVnntXKS";
String timestamp = "1646790230854428120";
String dataEncrypt= "abcdefg";
final String[] arrayStrs = { token, timestamp, nonce, dataEncrypt};
Arrays.sort(arrayStrs);
String sTemp = "";
for (final String s : arrayStrs) {
sTemp += s;
}
final MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(sTemp.getBytes());
final byte[] digest = md.digest();
String signature = "";
for (final byte b : digest) {
signature += String.format("%02x", b);
}
System.out.println(signature);
return;

}

C#:

static void Main(string[] args)
{
string token = "31a4a1aa-cffc-4aca-9ef6-0497edf7fbed";
string nonce = "Rzem0rlz19e6GZuZuFKyDzaxiS4baaqn8uvxVnntXKS";
string timestamp = "1646790230854428120";
string dataEncrypt = "abcdefg";
string[] arrayStrs = { token, timestamp, nonce, dataEncrypt};

Array.Sort(arrayStrs, string.CompareOrdinal);
string sTemp = String.Join("", arrayStrs);

string AA = testHash(sTemp);
Console.WriteLine($"SHA1 :{AA}");
Console.ReadKey();
return;
}

public static string testHash(string sTemp) {
byte[] key = System.Text.Encoding.Default.GetBytes(sTemp);
SHA1 sha1 = SHA1Managed.Create();
byte[] hash = sha1.ComputeHash(key);
string result="";
foreach (byte b in hash)
{
result += String.Format("{0:x2}", b);
}
return result;
}