Canonicalizer c14Canonicalizer = Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_EXCL_WITH_COMMENTS);
byte[] byteArray = c14Canonicalizer.canonicalizeSubtree(doc);
// At this point, the byteArray in Java and the data in C# matches up.
// That is, after the java bytes are converted to unsigned bytes using
// java.lang.Byte.toUnsignedInt()
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(byteArray);
byte byteData[] = md.digest();
var data = Encoding.UTF8.GetBytes(xmlString);
// At this point, the byteArray in Java and the data in C# matches up.
// That is, after the java bytes are converted to unsigned bytes using
// java.lang.Byte.toUnsignedInt()
using (var sha256 = SHA256.Create())
{
byte[] shaBytes = new byte[data.Length];
data.CopyTo(shaBytes, 0);
sha256.TransformBlock(shaBytes, 0, shaBytes.Length, shaBytes, 0);
sha256.TransformFinalBlock(shaBytes, 0, shaBytes.Length);
return sha256.Hash;
}
(再说一遍,数据是字节数组)
但是,字节不匹配。我是不是漏掉了什么?
(好吧,我当然是,否则它会起作用的,对吧?:S)
-86,44,95,84,3,50,7,-119,-36,46,39,32,-120,7,10,-86,-101,110,-93,-72,-13,-93,-42,111,0,59,-85,-63,-15,-98,-17,-52
当转换为
170,44,95,84,3,50,7,137,220,46,39,32,136,7,10,170,155,110,163,184,243,163,214,111,0,59,171,193,241,158,239,204
使用SHA256.computeHash()
时
你试过ComputeHash方法了吗?
即:
var byteArray = Encoding.ASCII.GetBytes("hello");
var sha = SHA256.Create();
byte[] outputBytes = sha.ComputeHash(byteArray);
var result = BitConverter.ToString(outputBytes).Replace("-", "").ToLower();
编辑
XmlDocument doc = new XmlDocument();
doc.LoadXml("xmlString");
XmlDsigExcC14NWithCommentsTransform c14n = new XmlDsigExcC14NWithCommentsTransform();
c14n.LoadInnerXml(doc.ChildNodes);
Stream s = (Stream)c14n.GetOutput(typeof(Stream));
var sha = SHA256.Create();
byte[] outputBytes = sha.ComputeHash(s);
我一直在尝试编译,并玩了一圈的和数,但仍然不能弄清楚错误是什么。有什么想法吗? 标题:
问题内容: 我已经使用C#,更广泛地使用.Net框架已有两年了。我经常听说C#和Java语言之间的相似之处,并且想了解有关第二种语言的更多信息。 来自C#时,您对学习Java有任何具体建议吗? C#程序员在启动Java时会发生任何常见错误吗? 是否有任何文档显示了您可以保留的习惯和必须改变的习惯(仍然在C#到Java的可视性中,所以比C#与Java的比较要具体一些) 问题答案: 好吧,尽管C#和J
我使用这个网站哈希:https://cryptii.com/hash-function
问题内容: 最近三年来,我一直在开发基于C#(.net)和Java(J2EE)的应用程序。 但是现在我感觉,Java,C#使您变得la脚(从学习的角度来看),您可以快速开发应用程序,但是您无法理解编程的基本底层概念。 因此,我正在尝试学习C ,但是由于指针,多重继承,C 的某些约定和其他概念,而在Java中不存在,我发现它有点“令人困惑”。那么,你们有什么建议?我应该如何看待? 谢谢 PS:我是学
我试图从这个网站编程SHA256实现:http://bradconte.com/sha256_c在MSP430单片机板上。我正在使用开源的Energia IDE进行编程。 这是测试代码: 这就转换成了魔法 问题是输出总是错误的哈希代码。 这是输出: 我在这里做错的是测试代码还是其他什么?
问题内容: 我正在围绕ArUco增强现实库(基于OpenCV)编写一个薄包装纸。我尝试构建的接口非常简单: Python将图像传递给C ++代码; C ++代码检测标记并将标记的位置和其他信息作为字典元组返回给Python。 但是,我不知道如何在Python中表示图像以将其传递给C ++。对于GUI和摄像机管理,我将使用PyQt,因此起初它将是QImage,但我不能简单地将其传递给OpenCV(或