范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

JavaSpring中三个密码加密库包foojay

  每当您需要在应用程序中实现密码哈希或散列时,您应该牢记一些最佳实践。  永远不要自己实现密码哈希算法——改用经过严格审查的开发人员库!密码学是一个复杂的领域,如果你尝试自己实现一个流行的算法,就会出现很多问题。  随着计算机每年变得越来越强大,密码哈希算法(及其参数)需要调整!现代密码哈希算法依赖于您(作为开发人员)来指定他们在计算哈希时应该使用多少资源,并且随着时间的推移,您将需要更新这些参数。掌握此类情况的唯一方法是紧跟最新的安全新闻和趋势。
  在决定如何存储敏感密码时,你应该考虑的第一件事是你是否想自己处理认证和授权问题。
  有许多服务可以为你解决这个问题。使用认证和授权服务可以消除你在应用程序中安全存储密码的负担。
  有许多商业服务,如Auth0和Okta,使之变得简单。只要你选择的供应商支持OpenID Connect等开放标准,你就能轻松地将它们集成到你的Java应用中(例如Spring Boot)。
  此外,你的供应商可能也能支持MFA(多因素认证),以进一步提高你的终端用户的安全性。
  如果您 确实 需要自己在 Java 应用程序中存储密码,那么本文适合您。
  如果您在应用程序中存储用户名和密码,无论您做什么, 都不要 以纯文本形式存储 密码
  密码哈希算法可将纯文本密码转换为一串数据,您可以安全地存储在数据库中,并且永远不会被反转(您可以将纯文本密码转换为哈希,但不可能将哈希转换为密码,因此命名为"单向"函数)。
  密码哈希算法是专为处理密码而设计的单向函数。
  您需要一个 强大的密码散列算法 来处理您的用户密码。一个好的密码散列算法会消耗大量的计算能力和内存。在谈论密码哈希算法时:他们使用的计算资源越多越好!
  Argon2id
  目前(2022 年)使用的最佳算法是 Argon2id。 Argon2 是一个密钥推导函数,被选为 密码哈希竞赛 的获胜者。它有三个不同的版本:  Argon2d: 最大限度地抵抗 GPU 破解攻击  Argon2i: 针对侧信道攻击进行了优化  Argon2id: 混合版本
  建议使用 Argon2id 版本的密码,因为它可以平衡侧通道和基于 GPU 的攻击。您可以通过提供三个参数来配置 Argon2id 算法:内存大小 (m)、迭代次数 (t) 和并行度 (p)。
  目前,建议使用 Argon2id,内存至少为 15 MiB,迭代次数为 2,并行度为 1。该算法已经包括为每个用户自动加盐以防止预先计算的攻击,所以这里不需要做任何特别的事情。
  将 Spring Security Crypto 与 Bouncy Castle 一起使用
  在 Java 应用程序中实现 Arong2id 的最简单方法是使用 spring-security-crypto 库。尽管它是 Spring 框架的一部分,但您不必使用 Spring 框架的其余部分。
  spring-security-crypto 库有一个 Argon2PasswordEncoder 您可以使用的。我个人认为命名有点偏离,因为这在技术上不是编码器而是哈希器。
  Spring 库 bouncycastle 用作包含 Argon2 算法的基于 Java 的完整实现的依赖项。
  spring-security-crypto 库可以被认为是一个直观的界面 bouncycastle,使其更易于使用。      org.springframework.security    spring-security-crypto    5.6.2      commons-logging    commons-logging    1.2      org.bouncycastle    bcpkix-jdk15on    1.70 
  默认情况下 Argon2PasswordEncoder 使用 Argon2id 版本,m=4MiB、t=3 和 p=1。尽管迭代次数高于最小值,但您可能仍要考虑更高的内存消耗。
  在下面的 Java 示例中,我使用了 m=15Mib、t=2 和 p=1 的最低要求。我使用与盐和哈希长度的默认值相同的值。  Argon2PasswordEncoder encoder = new Argon2PasswordEncoder(32,64,1,15*1024,2); var myPassword = "ThisIsMyPassword";  var encodedPassword = encoder.encode(myPassword); System.out.println(encodedPassword);  var validPassword = encoder.matches(myPassword, encodedPassword); System.out.println(validPassword); 
  代码的输出:  $argon2id$v=19$m=15360,t=2,p=1$YpRuuQhW1dHOimAnWD5TRU6Sebitu+fIrmIrenr+YOM$hkEXhhHpu2NUcPwhV4IUQelQdf4I8V+iyFsFiC8BYEisE3oWFv96zYeNA1i/awhaDo1XHz6Pp/1r55SS/I4AIA True
  为 JVM 使用 Argon2 绑定
  JVM 库的 Argon2 Binding 是 Spring 库的替代方案。该库由 Moritz Halbritter 创建,使用 JNA 调用原生 C 库。这种方法的优点是它使用了 Argon2 作者的原始实现,并且可能包括性能优势。因此,您需要能够访问系统上的底层 C 库。
  您可以选择使用包管理器自己安装此 C 库,或者依赖包含一组预编译 Argon2 库的库。推荐第一个,原因很明显,它更小。
  没有预编译库:       de.mkammerer     argon2-jvm-nolibs     2.11 
  使用预编译库:       de.mkammerer     argon2-jvm     2.11 
  这个库的使用非常简单。在下面的代码示例中,您可以看到一个与 Spring 示例等效的示例,使用相同的最小参数。  Argon2 argon2 = Argon2Factory.create(Argon2Factory.Argon2Types.ARGON2id, 32, 64); var myPassword = "ThisIsMyPassword";  var hash = argon2.hash(2,15*1024,1, myPassword.toCharArray()); System.out.println(hash);  var validPassword = argon2.verify(hash, myPassword.toCharArray()); System.out.println(validPassword); 
  scrypt
  如果你因为任何原因不能使用Argon2id, scrypt 是一个不错的第二选择。与argon2id类似,scrypt是另一种强大的密码散列算法,它允许你配置各种成本参数来增加它所消耗的资源。
  根据 OWASP Password cheat sheet , ,你应该使用一个最小的CPU/内存成本参数(N),一个最小的块大小(r),以及一个并行化参数(p)。下面的选项被认为是你应该使用的最小值。  N=2^16(64 MiB),r=8(1024字节),p=1 N=2^15 (32 MiB), r=8 (1024字节), p=2 N=2^14 (16 MiB), r=8 (1024 字节), p=4 N=2^13 (8 MiB), r=8 (1024 字节), p=8 N=2^12 (4 MiB), r=8 (1024字节), p=15
  请注意,以上的scrypt参数列表都会产生同样强大的密码哈希值。上面的选项只是展示了通过为N、r和p参数指定不同的值,你可以让scrypt算法使用更多的CPU或内存资源,这取决于你的偏好。我下面的建议展示了真实世界的用法,你可以简单地复制和粘贴,以达到简便的目的。
  spring-security-crypto库支持许多算法,包括SCrypt。你可以按照我们使用Argon2Encoder的方式使用SCryptEncoder。在下面的例子中,我使用了中间的建议,在CPU和内存分配之间提供了一个良好的平衡。  SCryptPasswordEncoder encoder = new SCryptPasswordEncoder(16384, 8, 4, 32, 64); var myPassword = "ThisIsMyPassword";  var encodedPassword = encoder.encode(myPassword); System.out.println(encodedPassword);  var validPassword = encoder.matches(myPassword, encodedPassword); System.out.println(validPassword); 
  输出:  e0804$8FQ4x/ntwEz2ZNu8QRyIQJlAXR+gQkiG3WulLMEq/kioVtaFiKE7sZDGgtmqUmwB8OE+f7Eagux9QXG478unLw==$RS1Bz5Uf30dWGxc+vtlkjj7tPnPdgq8YD1V8odhPW4A= true
  使用BCRYPT
  如果Argon2id和scrypt不可用,另一个强有力的选择是BCrypt。如果你决定使用 BCrypt ,工作系数参数应该设置为不低于10。
  你可以以类似于以前的方式使用spring-security-crypto库。默认的工作系数被设置为10,但我们在下面的例子中把它设置为14(在2022年是一个合理的数字)。  BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(14)。
  你设置的工作系数越高,哈希值就越强,但它也会花费更多的CPU资源(和时间!)来完成运行。在我的本地机器上,设置运行BCrypt的工作负荷为10,平均花费约89ms。对于14的工作量,平均是1033ms。这几乎是12倍的时间。这绝不是一个准确的基准,但它确实显示了增加工作因素的影响。

大多数人都不知道秘密运用要求,相信,接受,感恩,视觉化推荐序两千多年以来,一个隐藏在宗教经文中的词,几乎让所有读到它的人迷惑误解。历史上只有少数人参透了这个谜题。谜底一旦揭开,一个全新的世界将会呈现在你眼前。许多当今的佼佼者早已了解并酷冷至尊RGB键盘体验原厂茶轴,有钱任性?机械键盘,很多硬件厂商染指该行业并不是什么新鲜的事情,随着消费群体的变迁机械键盘也从无光到有光,单色光再到炫彩Rgb背光过度,很多厂商都有自己的得意之作,说起机械键盘就不得不提德国非法营运的可怕在于完全无保障,保险不赔付许多人坐非法营运的车,即黑车。毫无顾忌和畏惧。以为驾驶员购买了相应的商业保险,就算出了事,作为乘客也无影响。但是,它的可怕之处恰恰在于那不怕一万,就怕万一。非法营运即车辆行驶证显示装修时,再有钱也别买这6种家具,既不实用,还占地方阳春三月,正是一年当中的装修旺季。在装修时,我们都想装出一个尽善尽美的家。为此,不惜大掏腰包购买各种家具,但作为过来人必须告诉你,有些家具真不必买,不实用,还特占地方,谁买谁后悔。刚参加工作一两年的普通大学生,现实中,多少收入薪资正常合适?大学生就业与大学生就业薪资待遇一直是社会和家庭十分关注的话题。总的来说,知识代表价值的理论是越来越凸显,随着社会经济的发展,高科技的迅速铺开,有着一个较好的学历背景就是一个很好的平极速321公里小时特斯拉ModelS性能版谍照曝光近日,有海外媒体曝光了特斯拉ModelSPlaid版在纽博格林赛道的测试谍照。新车外观没有覆盖任何伪装,投产时间目前尚未确定。外观方面,测试中的ModelSPlaid没有覆盖任何伪特斯拉卖积分一年赚了15。8亿美元,咋回事?双积分碳交易与市场机制华说汽车厂家的挣钱之道,不外乎卖汽车,这是它们的主业。而今,它们有了一项增加收入的副业卖积分。当然,前提是有积分可卖。这买卖的出现,源起于2017年9月工信部排队四小时充电一小时,你还会买新能源车吗?作者叶葳国庆期间,新能源汽车频频上了新闻热点,特别是央视报道的充电一小时,排队四小时的新闻引发了热议并冲上热搜,新能源车的续航能力以及充电问题成了大家最关心的问题。一位从深圳回湖南东数西算为什么是贵州内蒙古甘肃宁夏?闲话东数西算华说东西南北,资源禀赋各不相同。对基建狂魔而言,这是大展手脚的机会。北方缺水,而南方水量丰沛,便有了南水北调西部能源丰富,而东部需求甚殷,便有了西气东输西电东送。而今是决战即将上演!欧洲杯官方合作伙伴gorenje与您共逐冠军北京时间7月8日凌晨,英格兰坐镇主场对阵丹麦,先失一球的情况下奋起反攻,最终2比1战胜丹麦,首度打入欧洲杯决赛。本届欧洲杯将在北京时间7月12日迎来终章。gorenje与您共同期待蓝衣军团勇夺欧洲杯冠军国际高端家电gorenje与您共享意大利之夜北京时间7月12日晚,历经120分钟客场鏖战,蓝衣军团意大利最终点球决胜,夺得欧洲杯冠军。欢呼声响彻亚平宁半岛,意大利之夜回荡在欧洲的大街小巷。欧洲杯官方合作伙伴gorenje,与
失传已久的西夏文字,被人工智能破译,输入法大同小异大家好,我是科技君的探讨,欢迎关注我,与我一起进行科技的探讨。文字是国家文明的象征,是一个国家的文化的传承,文字因国家兴盛而被传承,而国家也因文字不断继续绵延。中华文明上下五千年,李国庆凡尔赛不小心就成了酒类直播带货Top5作者龚进辉当当创始人李国庆又凡尔赛了。日前,他在社交平台中称自己不小心就成了直播带货带酒Top5,现在就看能不能把团队做大,达到年销售30亿甚至100亿,真正做到行业前三,这是目前王者荣耀120帧23日将有多款机型适配?联想新Pad配置很足除了VivoiQOO8系列,王者荣耀又再度适配了多款120帧机型,RealmeGTNeo2也在其中。这次适配的机型很多,包括vivoX70ProRedmK40Pro小米11Pro小荣耀性价比手机,曲面屏仅2699元,还有120Hz66W一亿像素智能手机行业竞争激烈,荣耀与华为分家之后,市场份额也是降至最低点,不过经过几个月的努力,现在市场份额逐渐上升,今天要说的这款手机就是来自荣耀的荣耀50,这款手机在今年6月份发布,这可以分享你手机里认为最美的一张照片吗?最美照片美不美,蓝天云海日照垒。谢谢!我觉得我用手机拍的天空最美分享一下!那年初冬,八达岭长城上的红叶,挺立红艳,夺人眼球!我认为这是张美图微笑没有最好只有更好,手机拍照大多很随意运动玩球的照片可以怎么拍?因为个人是打篮球的,所以以篮球为载体来回答,以拍照选材角度进行分析。既然是以运动为拍照对象,而又是篮球运动,个人认为就应该有技术感,运动的美感以及情感的代入感。1。扣篮。在篮球领域太空出差三人组回家,民族品牌成功迈向航天领域,华为小米上榜在刷新单次飞行任务太空驻留时间纪录后,三名中国航天员于17日顺利返回地球,标志着中国空间站阶段首次载人飞行任务取得圆满成功,这是中国成为太空大国的最新里程碑。很多网友好奇,航天员在北京有哪些明星?北京作为帝都,出产的明星无论是数量还是质量上都在全国首屈一指,在此列举十大美女明星!1章子怡1979年2月9日出生,籍贯北京。2000年毕业于中央戏剧学院,1998年主演张艺谋电影ampampquot高端制造新能源汽车航天航空ampampquot,全球最大的铝合金轮毂生产基地万丰奥威(002085)2021年16月公司实现营业总收入55。47亿元,较上年同期增长25。44实现归属于上市公司股东的净利润为2。33亿元,较上年同期下降7。71扣非后归属于母神12飞船三位航天员都是什么军衔,完成任务的他们军衔会晋升吗?一聂海胜,这次执行神舟十二号任务是其第三次飞天。聂海胜曾经在2005年10月执行神舟六号任务,11月被授予英雄航天员荣誉称号。2013年6月搭乘神舟十号,执行天宫一号与神舟十号载人四年了,苹果还没干掉刘海四年了,iPhone的刘海终于做出了改变,只缩短了三分之一。七年了,iPhone的外凸摄像头也终于做出了改变,似乎更加凸出了。更强大的拍照功能更长的续航以及降低的售价让十三香iPh