C# Java Argon2加密工具类
编辑
85
2023-04-21
C# Argon2加密
NuGet包管理器
dotnet add package Konscious.Security.Cryptography.Argon2 --version 1.3.0
C#工具类
using System;
using System.Text;
using System.Security.Cryptography;
using Konscious.Security.Cryptography;
/// <summary>
/// Argon2加密
/// </summary>
public class Argon2Hasher
{
/// <summary>
/// 给密码加密
/// </summary>
/// <param name="password"></param>
/// <param name="salt"></param>
/// <returns></returns>
public static string HashPassword(string password, string salt)
{
byte[] saltBytes = Encoding.UTF8.GetBytes(salt);
using (var hasher = new Argon2id(Encoding.UTF8.GetBytes(password)))
{
hasher.Salt = saltBytes;
hasher.DegreeOfParallelism = 8; // 根据您的硬件设置
hasher.MemorySize = 65536; // 64 MB
hasher.Iterations = 4;
byte[] hashBytes = hasher.GetBytes(32); // 获取32字节的哈希值
return Convert.ToBase64String(hashBytes);
}
}
/// <summary>
/// 验证密码
/// </summary>
/// <param name="password"></param>
/// <param name="storedHash"></param>
/// <param name="salt"></param>
/// <returns></returns>
public static bool VerifyPassword(string password, string storedHash, string salt)
{
string hashToVerify = HashPassword(password, salt);
return storedHash.Equals(hashToVerify);
}
}
Java Argon2加密
Maven 管理器
<dependency>
<groupId>de.mkammerer.argon2</groupId>
<artifactId>argon2-jvm</artifactId>
</dependency>
Java工具类
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import de.mkammerer.argon2.Argon2;
import de.mkammerer.argon2.Argon2Factory;
public class Argon2Hasher {
/**
* 给密码加密
*
* @param password
* @param salt
* @return
*/
public static String hashPassword(String password, String salt) {
Argon2 argon2 = Argon2Factory.create(Argon2Factory.Argon2Types.ARGON2id);
char[] passwordChars = password.toCharArray();
byte[] saltBytes = salt.getBytes(StandardCharsets.UTF_8);
try {
byte[] hashBytes = argon2.hashRaw(4, 65536, 8, passwordChars, saltBytes);
return Base64.getEncoder().encodeToString(hashBytes);
} finally {
argon2.wipeArray(passwordChars);
}
}
/**
* 验证密码
*
* @param password
* @param storedHash
* @param salt
* @return
*/
public static boolean verifyPassword(String password, String storedHash, String salt) {
String hashToVerify = hashPassword(password, salt);
return storedHash.equals(hashToVerify);
}
}
- 0
- 0
-
分享