asp.net-是否可以将40个字符的SHA1哈希转换为20个字符的SHA1哈希
我的题目有点毛躁,也许是我问错了题目,以是请多包容… 我有一个旧的MySQL数据库,该数据库存储用户暗码&成员体系的盐.这两个值都已行使Ruby框架举办了哈希处理赏罚-大抵如下所示:
因此,两个值在MySQL中都存储为40个字符的字符串(varchar(40)). 此刻,我必要将全部这些用户导入到新网站的ASP.NET成员资格框架中,该网站行使SQL Server数据库.据我相识,以我设置ASP.NET成员身份的方法,用户暗码和盐也作为SHA1哈希存储在成员身份数据库(在表aspnet_Membership中)中,然后举办Base64编码(有关具体信息,请拜见here)并存储作为nvarchar(128)数据. 可是从存储的Base64编码字符串的长度(28个字符)来看,ASP.NET成员身份天生的SHA1散列好像只有20个字符长,而不是40个字符.从其他方面的研究中,我一向在思索与每个字符/字符集/编码或相干内容的位数有关. 那么,是否有某种要领可以将40个字符的SHA1哈希转换为20个字符的哈希,然后可以将其转移到新的ASP.NET成员资格数据表中?到今朝为止,我对ASP.NET成员身份很是认识,可是我感受我只是缅怀这一部门.可是,也也许知道Ruby中的SHA1和.NET中的SHA1是不兼容的,以是我正在一场失败的战斗中… 预先感激您的任何看法. 最佳谜底 Ruby应用措施中的varchar暗示情势好像是“字符串情势的十六进制”,相同于:01AB02EF … 23EF.也就是说,每个字节都用一对字符暗示,它们是该字节的十六进制值,从00到FF.因此,SHA哈希(20个字节)被暗示为40个字符.假如哈希是值(0,1,2,…),则字符串将为000102.ASP base64是现实字节的base64编码.因此,您所必要做的就是获取MySQL字符并获取响应的字节,然后将其编码为base64.您现实上可以在SQL自己中举办转换:
可是要强制您的ASP.Net成员资格提供措施行使您建设的Ruby代码的盐腌哈希,与用于存储哈希择要的编码无关,这是一个完全差异的主题.您也许必需重写本身的成员资格提供措施,这时存储编码变得无关紧急,由于您可以按照必要存储它们. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |