网站大量收购独家精品文档,联系QQ:2885784924

shiro编码和加密.pdfVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
shiro编码和加密

shiro 编码和加密 涉及到密码存储问题上,应该加密/生成密码摘要存储,而不是存储明文密码。比如之前的 600w csdn 账号泄露对用户 可能造成很大损失,因此应加密/生成不可逆的摘要方式存储。 编码/解码 Shiro 提供了 base64 和 16 进制字符串编码/解码的 API 支持,方便一些编码解码操作。Shiro 内部的一些数据的存储/表示 都使用了 base64 和 16 进制字符串。 Java 代码 1. String str = hello; 2. String base64Encoded = Base64.encodeToString(str.getBytes()); 3. String str2 = Base64.decodeToString(base64Encoded); 4. Assert.assertEquals(str, str2); 通过如上方式可以进行 base64 编码/解码操作,更多 API 请参考其 Javadoc。 Java 代码 1. String str = hello; 2. String base64Encoded = Hex.encodeToString(str.getBytes()); 3. String str2 = new String(Hex.decode(base64Encoded.getBytes())); 4. Assert.assertEquals(str, str2); 通过如上方式可以进行 16 进制字符串编码/解码操作,更多 API 请参考其 Javadoc。 还有一个可能经常用到的类 CodecSupport ,提供了toBytes(str, utf-8) / toString(bytes, utf-8)用于在 byte 数组 /String 之间转换。 散列算法 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如 MD5、 SHA 等。一般进行散列时最好提供一个 salt (盐),比如加密密码“admin ”,产生的散列值是 “21232f297a57a5a743894a0e4a801fc3”,可以到一些 md5 解密网站很容易的通过散列值得到密码“admin”,即如 果直接对密码进行散列相对来说破解更容易,此时我们可以加一些只有系统知道的干扰数据,如用户名和 ID (即盐);这样 散列的对象是“密码+用户名+ID”,这样生成的散列值相对来说更难破解。 Java 代码 1. String str = hello; 2. String salt = 123; 3. String md5 = new Md5Hash(str, salt).toString();//还可以转换为 toBase64()/toHex() 如上代码通过盐“123”MD5 散列“hello”。另外散列时还可以指定散列次数,如 2 次表示:md5(md5(str)) :“new Md5Hash(str, salt, 2).toString()”。 1 / 8 Java 代码 1. String str = hello; 2. String salt = 123; 3. String sha1 = new Sha256Hash(str, salt).toString(); 使用 SHA256 算法生成相应的散列数据,另外还有如 SHA1、SHA512 算法。 Shiro 还提供了通用的散列支持: Java 代码 1. String str = hello; 2. String salt = 123; 3. // 内部使用 MessageDigest 4. String simpleHash = new SimpleHash(SHA-1, str, salt).toString(); 通过调用 SimpleHash 时指定散列算法,其内部使用了Java 的 MessageDigest 实现。 为了方便使用,Shiro 提供了 HashService ,默认提供了DefaultHashService

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档