为两个实际相同的不同字符串的URL获得唯一的哈希值
我正在根据其哈希代码索引一些URL,并使用此哈希检索它们.我有两个问题: 您认为这是一个好方法吗?我的意思是有时两个不同的URL可以产生相同的哈希,但我似乎没有其他选择,因为URL可能很长,我需要为它们制作文件名. [更重要的是]有时两个不同的URL实际上是在将两个不同的URL转到同一页面(例如 http://www.stackoverflow.com 和 http://stackoverflow.com 有时带有%字符的URL),但我需要为这些URL产生相同的哈希代码.你建议什么? 谢谢. 解决方案 经过大量的讨论和思考,由于没有答案可以完全回答我的问题,所以我要回答自己的问题.重要的一件事是,莫滕·默特纳(Morten Mertner)发表的评论是我答案最接近的事情,但我不能选择它作为答案. 除了使用哈希算法外,我别无他法.但是为了降低复制的风险,我应该使用更好的算法(例如SHA-2). 正如莫滕·默特纳(Morten Mertner)所说,在某些情况下
14 2024-04-26
编程技术问答社区
遗留的vbscript到c#等价物
我在经典的ASP网站上继承了一种旧的哈希算法,该算法是我正在转换为ASP.NET的经典ASP网站(此阶段2.0). 在我的一生中,我无法在较旧的功能上掌握足够的范围,无法在C#中编写匹配代码.我确定它真的很简单,但是目前我看不到树林的树林. 这是采用字符串的原始经典ASP代码,对等效C#代码的任何帮助将不胜感激: Function PHash( pValue ) Dim dValue Dim dAccumulator Dim lTemp Dim sValue sValue = UCase(Trim("" & pValue)) dAccumulator = 0 For lTemp = 1 to Len(sValue) dValue = Asc(Mid(sValue, lTemp, 1))
12 2024-04-26
编程技术问答社区
在C#中验证RSA SHA256签名
我有一个签名和公钥,我想验证该签名与我的输入数据匹配.我什至有一个可做和有效的Java样本,但无法将其转换为C#. 这是我尝试使用C#的方法,没有任何作用 string dataForSign = "456456" + "43223174" + "2016-11-28T14:57:50+0100" + "1148034147085158089"; string signature = "247A9B78E3FE5D4376B6A0DC2E6D721653E748F35473AFCD575FF8707CE6D8933E367B3D52E1EA6D2F2E22279F4EF5C144B48988352B02976D6CB864D947B02469DE7101A371FD4342E7C173F3C4C079B3E13B35D7FA60025A360A347D2A962B12BB3607E986CD32B149D4ADA87D94B4C4D632440066AFB8017527095
10 2024-04-26
编程技术问答社区
在C#.Net和Oracle之间获得不同的加密结果
我想在C#.NET和Oracle 10G中基于SHA1算法加密一些字符串. 我在c#.net中的算法: string salt = "123"; System.Security.Cryptography.SHA1 sha = System.Security.Cryptography.SHA1.Create(); byte[] preHash = System.Text.Encoding.UTF32.GetBytes(salt); byte[] hash = sha.ComputeHash(preHash); string password = System.Convert.ToBase64String(hash); password = password.Substring(0, 8); // password value is: "7yP7/lkJ" 在Oracle中: Create Or Replace Function Sha1(P_Value Varch
16 2024-04-25
编程技术问答社区
停止使用文件流的散列操作
我的代码计算给定输入文件的MD5哈希. public static String ComputeMD5(String filename) { using (var md5 = MD5.Create()) { try { using (var stream = File.OpenRead(filename)) { return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-", "").ToLower(); } } catch (Exception) { // File is not a
8 2024-04-25
编程技术问答社区
C#-没有元数据的MS Office文档的哈希内容
我正在尝试识别具有重复内容的文件.决定使用哈希机制(MD5,SHA1或任何其他)进行比较.使用" .txt"文件可以正常工作.但是,使用MS Office文件(.doc,.docx,.xls等),这将失败. md5/sha1哈希对于MS Office文件不是恒定的,即使它们具有相同的"文本"内容.我假设MS Office在文件中存储某种元数据,每次保存文件时会更改.因此,哈希是不同的. 例如.我有一个文件abc.doc,并为其计算哈希(hash1).打开并更改1个字并保存文件.取消您所做的更改,并保存和计算哈希(Hash2). Hash1!= Hash2在这种情况下.如果您在" .txt"文件 上尝试此操作是一样的 有没有办法根据哈希内容来删除MS Office文档?我们只能哈希只有文件的内容,而不是其meta-data? 解决方案 我认为如果不使用工具提取文档的文本然后将文本放置,则无法完成.我可以推荐外面的恒星,现在由Oracle拥有.但这可能是满足您需求的过
16 2024-04-25
编程技术问答社区
将带有HASH MD5的字符串转换为ToBase64String
这是我的问题, 我有此代码,该代码接受带有密码的干净文本并返回base64md5哈希 private static string GetMd5Base64Pass(string userpwd) { MD5 md5 = new MD5CryptoServiceProvider(); return Convert.ToBase64String(md5.ComputeHash(Encoding.ASCII.GetBytes(userpwd))); } 我需要重复使用它来接受MD5字符串哈希并在base64md5中返回. 我试图这样做: private static string GetMd5Base64PassMD5(string userpwd) { MD5 md5 = new MD5CryptoServiceProvider(); return Conve
10 2024-04-24
编程技术问答社区
如何计算汇编的哈希值,以便用这个哈希值来判断汇编中的代码是否有变化?
问题是,与以前的构建结果相比,重建完全相同的代码会生成不同的程序集. 为什么我需要这个?我有一个T4模板,该模板从给定的合同组件中生成某些源代码.即使生成了VCS,该源代码也会签入VCS中.这是因为合同组件的变化相对较少.但是,当它确实改变时,只要不重新评估上述T4模板,我就希望使构建失败. 我的计划是在生成的源文件中种植合同组件的哈希守则,例如: // 1B-D0-06-48-02-C2-C5-C5-48-37-AA-61-66-6B-6D-01 当构建包含模板的项目时,将有一个MSBUILD任务.该任务将计算合同组件哈希,并将其与生成的源代码烘烤的一个进行比较.不平等意味着合同组件已经改变,我们需要重新运行模板. 存储汇编版本没有帮助 - 在开发过程中是相同的. 另一个解决方案是在运行时将模板评估为临时文件,并在生成的源文件上复制它,如果它不同 - 无需哈希. 但是,我想吸引开发人员注意合同改变的事实.在这一点上,我希望开发人员手动重新评估模板
10 2024-04-24
编程技术问答社区
使用C# HashSet来解决相等不等于的问题
我将其基于我最近发现的Dictionary的性能特征,因此我正在使用Dictionary bool bool被忽略,但据说我可以使用HashSet. 例如: Dictionary overlap; class bounds { public float top_left_x, top_left_y, width, height; public bool equal(bounds other) { return upper_left_x + width > other.upper_left_x && upper_left_x other.upper_left_y && upper_left_y
16 2024-04-23
编程技术问答社区
我应该如何覆盖HashSet的Equals和GetHashCode?
可以说我有课: public class Ident { public String Name { get; set; } public String SName { get; set; } } ,还有一个: class IdenNode { public Ident id { get; set; } public List Nodes { get; set; } public IdenNode() { Nodes = new List(); } } 我想谨记使用HashSet,当时它的两个元素是相同的(相等),并且仅当它们的id.names等于. . 所以,我要覆盖Equals和GetHashCode subly n
12 2024-04-23
编程技术问答社区
我如何在我的ASP.Net应用程序上使用加盐+哈希?
我从头开始构建一个项目,我想以正确的方式做事.我在网上阅读了有关哈希的信息,这基本上是在64封信中转动密码,正确? 盐呢? 我的问题是: 如何使用C#? 放置字符串 MSSQL中的字段声明类型是什么? nvarchar(64)? 什么是盐,我需要将其保存在数据库中的某个地方? 如果我打算让人们使用Facebook Connect,我是否需要担心创建哈希/盐? 代码示例是首选.谢谢! 解决方案 我将跳过问题1,因为我不是C#人. 问题3: 盐在哈希之前,将一串随机数据添加到密码中.盐是必不可少的,因为没有它们,攻击者就可以预先生成为每个密码生成新盐很重要. 盐值不是秘密的,可以与数据库中的哈希密码一起存储. 用于生成和检查密码的伪代码如下: generatePassword(String user, String password) { String salt = generateRandomSalt();
10 2024-04-23
编程技术问答社区
我有错误的哈希值?C# 密码学
我的文本文件说快速的棕色狐狸跳过了懒狗,但是当我尝试从该文件中获取MD5和SHA1的哈希与Wikipedias的结果不同时.我有3个问题. 1)我在代码中做错了什么? 2)如何更好地拥有此代码? (我需要初始化)3)如何加盐? { const int bufSize = 1024 * 8; int read; byte[] buf = new byte[bufSize]; string fn = @"b.txt"; byte[] result1 = new byte[0]; byte[] result2 = new byte[0]; SHA1 sha = new SHA1CryptoServiceProvider(); MD5 md5 = new MD5CryptoServiceProvider(); sha.Initialize
14 2024-04-23
编程技术问答社区
WinRT/Metro中的增量哈希方法
我正在移植一些使用增量SHA-1的代码: SHA1 hasher = HashAlgoFactory.Create(); hasher.Initialize(); DiskIOCallback readCallback = null; readCallback = delegate(bool successful) { if (successful) hasher.TransformBlock(hashBuffer, 0, count, hashBuffer, 0); offset += count; if (!successful || offset == endOffset) { object hash = null; if (successful) { hasher.TransformFinalBlock(hashBuffer, 0, 0); hash = hasher.Hash;
12 2024-04-23
编程技术问答社区
字符串的不区分大小写的哈希值(SHA)。
我将名称字符串及其SHA1值传递给数据库. SHA值用作搜索的索引.实施完成后,我们需要要求搜索名称案例不敏感.我们确实需要考虑所有语言(汉字是一个真正的用例). 我知道土耳其测试.在散列之前,我该如何改变输入字符串,以使情况不敏感?理想情况下,我希望它等于. 换句话说,如何使此功能情况的输出不敏感? private byte[] ComputeHash(string s) { byte[] data = System.Text.Encoding.Unicode.GetBytes(s ?? string.Empty); SHA1 sha = new SHA1CryptoServiceProvider(); // returns 160 bit value return sha.ComputeHash(data); } 如果不可能,我也许可以制作我敢打赌这是不可能的.如果不是这样,有什么作用? 解决方案 现有的答案建议使用
8 2024-04-23
编程技术问答社区
数字签名(PKCS#7-延迟签名)/该文件在应用签名后被修改或损坏了
我遇到了所有类似的问题,但找不到应用iTextSharp递延签名的情况. 基本上,我的应用程序使用远程Web服务创建的PKCS#7签名符号PDF文档. 我的应用程序发送此Web服务原始文档的哈希(添加了空签名字段后签名字节的哈希),并接收一个base64编码的签名文件. 我将此签名嵌入到具有空签名字段的先前生成的临时PDF文件中. 最后,我的签名未得到验证,因为Adobe Reader说该文档已更改或已损坏. 添加空签名字段并获得pdf 的签名字节的代码 public static string GetBytesToSign(string unsignedPdf, string tempPdf, string signatureFieldName) { if (File.Exists(tempPdf)) File.Delete(tempPdf); using (PdfReader reader = new PdfRead
30 2024-04-23
编程技术问答社区
比SHA1更好的哈希算法
我正在处理一个应用程序,我需要存储用户密码,所以我想将其存储在注册表的当前用户类中,但是我也想出于明显原因将其存储,我已经看到新闻项目说明SHA1已经破解了,是否有更好的(无裂缝)哈希算法在"标准"系统或.NET中可用? 解决方案 sha1不是但我建议使用定制种子每个条目,以便a 可以在文章其他解决方案 正如您在评论中所说的那样,SHA1是一种哈希算法,而不是加密.这是一个单向函数,即使破坏了它,也不允许检索密码. 如果您想要已经在.NET中的更强大的哈希功能,请查看SHA2家族-SHA256,SHA384,SHA512. (SHA224也存在,但在系统中未实现. 对SHA1的碰撞攻击实际上尚未可利用,但是您可以向前看. NIST鉴于这些攻击,目前正在为SHA3运行SHA3的选择过程,但这是从完成和商业接受后几年.另一方面,SHA2是现有的算法家族,由NIST标准化,不受对MD5和SHA1的成功攻击. 其他解决方案 您需要做的是示例代码在C#中使用SHA1和SA
8 2024-04-23
编程技术问答社区
对于 Windows exe/二进制文件,证书、签名和缩略图有什么区别?
我试图在Windows可执行文件和二进制文件的上下文中了解签名,拇指和证书之间的区别.在发布此问题之前,我在互联网上抬头,但没有得到简洁的差异.也许我对这三个术语的理解首先尚不清楚.有人可以帮我吗? 解决方案 a 证书是通常使用X.509标准生成的文档声称是(身份验证),也就是说,如果您说自己是www.example.com,那就是真正的人. 使用CA的私钥,经常由受信任的证书机构(CA)签署证书. 数字签名是证书的一部分,可用于验证CA是否真正签署了证书.通常,它是通过哈希证书的第一部分来计算的,然后使用CA私钥使用指定的加密算法. thumbprint 仅是整个证书(包括签名)上的哈希(SHA1或SHA256). 请注意,无论您在Windows还是其他平台上,这些术语都具有相同的相关性.
32 2024-04-22
编程技术问答社区
将C#生成的校验和与SQL Server的校验和进行比较
我想将大量数据从C#发送到我的数据库,以及计算出的校验和作为最后一个值,应该将其与SQL Server的存储过程从这些值中计算出来的数据库. . 为了实现这一目标,我尝试了许多不同的方式,例如sql内置Checksum方法和不同的哈希语,但是c#和sql计算了不同的值,或者哈希不适用于NVARARCARS和NVARCHARS和整数(fx.MD5哈希)是我所需要的. 有人实际上设法做到了,还是知道如何? 引用我们失败的MD5尝试: sql Server Server Server Server shoshbytes转换不一致吗? 在这里,计算结果与C#使用NVARARCARS 时不同 哈希方法: Set @result = convert(nvarchar(32), hashbytes('MD5', @DataID + @Data1 + @Data2 + @Data3), 2) 另外,当您将哈希方法作为参数(如Dataid)时,它会抱怨: "参数数据类
28 2024-04-22
编程技术问答社区
Asp.net身份散列是安全的吗?
我已将以下URL中的Rijndael和ASP.NET Hashing实现引用以下网站. rijndael- 如何产生Rijndael Key和IV使用密码? asp.net哈希 - asp.net身份默认密码hasher,它是如何工作的? 在两个实现中, 以下内容用于获取密码的随机字节. rijndael Rfc2898DeriveBytes pdb = new Rfc2898DeriveBytes(password, SALT); asp.net身份哈希 Rfc2898DeriveBytes bytes = new Rfc2898DeriveBytes(providedPassword, salt, HasingIterationsCount) 在上述代码之后,Rijndael应用返回字节的加密. 但是ASP.NET身份将结果复制,因为它与Salt Byte数组一起返回Hashed键. 在这里我感到困惑. rijndael和asp.net身份哈希
12 2024-04-22
编程技术问答社区