草庐IT

java - 我应该使用哪种密码散列方法?

这个问题让我又开始思考密码散列。我目前使用bcrypt(特别是py-bcrypt)。我听说过很多关于PBKDF2和scrypt的信息。我想知道是否有任何我可能不知道的“更现代”的密码散列方法(因为它们是新的,所以人们不会那么多地谈论它们),或者我可能不知道的其他方法不知道。然后从那里继续,我应该使用哪一个?大多数人似乎都推荐bcrypt,但我想知道这是否只是因为它很旧(阅读:众所周知)。scrypt似乎更好(内存使用量可变)。我对PBKDF2了解不多。所以如果我制定一个用户管理方案,我应该使用其中的哪一个?还是我应该使用完全不同的东西? 最佳答案

java - map 中的 3 亿个项目

如果他们每个人都保证有一个唯一的key(生成和由外部键控系统强制执行),其中Map实现是适合我吗?假设这必须针对仅并发查找(数据在执行过程中初始化一次应用程序启动)。这3亿个唯一键是否有任何积极或消极的对分桶/碰撞的影响?还有其他建议吗?我的map看起来像这样Map> 最佳答案 我不会使用map,这需要很多内存。特别是在你的情况下。将值存储在一个数据数组中,并将键存储在排序的索引数组中。在排序的数组中,您使用binSearch查找数据[]中键的位置。棘手的部分是在不耗尽内存的情况下构建数组。你不需要考虑并发,因为你只从数据中读取进一

java - MD5 签署 HttpServletResponse

我正在寻找一种方法来检查HttpServletResponse的内容,以使用MD5哈希对其进行签名。伪代码可能是这样的process(Responseresponse,Requestrequest){defaultProcessingFor(response,request);dispatcher.handle(response,request);//HereIwanttoreadthecontentsoftheResponseobject(nowfilledwithdata)tocreateaMD5hashwiththemandaddittoaheader.}这可能吗?

java - 哈希码的理解

哈希函数在实现哈希表中很重要。我知道在java中对象有它的哈希码,它可能是由弱哈希函数生成的。下面是一段“补充哈希函数”staticinthash(Objectx){inth=x.hashCode();h+=~(h>>14);h+=(h>>10);returnh;}谁能帮忙解释一下哈希算法的基本思想是什么?生成非重复整数?如果是这样,这些如何按位运营成功了吗? 最佳答案 散列函数是任何定义明确的过程或数学函数,可将大量可能可变大小的数据转换为小数据,通常是可用作数组索引的单个整数。哈希函数返回的值称为哈希值、哈希码、哈希和、校验和或

java - String.hashCode() 效率低下吗?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion查看sourcecodeofjava.lang.Stringofopenjdk-1.6时,我看到String.hashCode()使用31作为质数并计算s[0]*31^(n-1)+s[1]*31^(n-2)+...+s[n-1]现在我看这个的原因是我想到的问题是比较String.equals中的hashCodes是否会使String.equals明显更快。但是现在看hashCode,我想到

java - Delphi 中有哈希数组吗?

我正在学习Delphi,但喜欢在Perl和Java中使用哈希数组。Delphi中是否有比较数据结构?我知道可以将TStringList用作哈希数组:varmyHash:TStringList);beginmyHash:=TStringList.Create();myHash.values['color']:='blue';Showmessage(myHash.Values['color']);//bluemyHash.free;end;是否有可能在Delphi中构建更复杂的数据结构,如Perl的数组哈希等? 最佳答案 如果您使用的是

java - 如何为一个巨大的字符串列表计算一个好的哈希码?

一次性根据这些字符串的值计算哈希码的最佳方法是什么?好的,我的意思是它需要:1-快速:我需要获取大量短字符串列表(10^3..10^8项)的哈希码。2-识别整个数据列表如此多的列表可能只有几个不同的字符串必须有不同的哈希码如何用Java实现?也许有一种方法可以使用现有的字符串哈希码,但是如何合并为单独的字符串计算的许多哈希码?谢谢。 最佳答案 为您的字符串创建一个占位符类,然后使用CRC32class.它简单快速:importjava.util.zip.CRC32;publicclassHugeStringCollection{pr

java - 将 UUID 转换回字符串输入 - nameUUIDFromBytes

我正在使用函数UUID.nameUUIDFromBytes(byte[])[1]将字符串转换为UUID。获得UUID后是否可以转换回原始字符串?[1]https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html#nameUUIDFromBytes-byte:A- 最佳答案 这是UUID的类描述UUIDisanimmutablerepresentationofa128-bituniversallyuniqueidentifier(UUID).Therearemultiple

Java将哈希值转换为随机字符串

我正在尝试开发一个在彩虹表生成器中使用的缩减函数。缩减函数背后的基本原理是它接受一个散列,执行一些计算,并返回一个特定长度的字符串。目前我正在使用SHA1哈希,我需要返回一个长度为三的字符串。我需要由以下任意三个随机字符组成的字符串:abcdefghijklmnopqrstuvwxyz0123456789我面临的主要问题是我编写的任何归约函数总是返回已经生成的字符串。一个好的归约函数只会很少返回重复的字符串。任何人都可以就实现此目标的方法提出任何想法吗?或者任何关于哈希到字符串操作的建议都会很棒。提前致谢乔希 最佳答案 听起来您需要

java - java中的哈希码桶分布

假设我需要在Hashset中存储1000个对象,我有1000个包含每个对象的桶(通过为每个对象生成唯一的哈希码值)还是有10个大约包含100个对象的桶更好?拥有独特桶的优势之一是我可以节省调用equals()方法的执行周期?为什么设置一定数量的桶并在其中尽可能均匀地分配对象很重要?理想的对象与桶的比例应该是多少? 最佳答案 Whyisitimportanttohavesetnumberofbucketsanddistributetheobjectsamoungthemasevenlyaspossible?HashSet应该能够平均在