c# - 从 Java 到 C# 验证(匹配) token

标签 c# java authentication encryption

我试图让我的 Java 程序使用消息和 key 生成签名。我的 C# 程序应该使用相同的消息和 key 生成相同的 token 。

但是,由于生成的 token 不同,有些东西无法正常工作。

有人能找出这两个程序之间的区别以及为什么它们没有生成匹配的 key 吗?

Java 代码:

this.algorithm = "hmacSHA256";
private static Mac mac;
String message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum id urn";
String secretKey = "5771CC06-B86D-41A6-AB39-9CA2BA338E27";

if( mac == null ) {
    mac = Mac.getInstance(algorithm);
    SecretKeySpec secret = new SecretKeySpec(secretKey.getBytes("US-ASCII"), 
        mac.getAlgorithm());
    mac.init(secret);
}
this.signature = new String(Base64.encodeBase64(mac.doFinal(message.getBytes("US-ASCII"))));

C# 代码:

string message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum id urn";
string secret = "5771CC06-B86D-41A6-AB39-9CA2BA338E27";

secret = secret ?? "";
var encoding = new System.Text.ASCIIEncoding();
byte[] keyByte = encoding.GetBytes(secret);
byte[] messageBytes = encoding.GetBytes(message);
using (var hmacsha256 = new System.Security.Cryptography.HMACSHA256(keyByte))
{
    byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
    return Convert.ToBase64String(hashmessage);
}

最佳答案

我可以看到您在 C# 中使用了 HMACSHA256 哈希算法。但是你在 Java 中使用什么算法呢?

关于c# - 从 Java 到 C# 验证(匹配) token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19032046/

相关文章:

Java 简单日期格式

java - 从 javax.swing.text 对 AbstractDocument.UndoRedoDocumentEvent 尝试 instanceof 时出现 IllegalAccessError

c# - 如何从服务器端代码获取控件的完整 ClientID

java - XML:将 xml 文档附加到另一个文档的节点中

java - 使用 httpclient 4.x 验证单个请求

java - Struts2登录拦截器不工作

ios - 是否可以在默认设置中获取 USE TOUCHID FOR iPhone 解锁的值

c# - 使用 ResXResourceReader 时如何判断资源是嵌入文件还是嵌入字符串

javascript - 如何使用 selenium Web 驱动程序或使用 Javascript 防止页面重新加载?

c# - 在特定位置写入数据