java md5加盐加密_java 实现md5加密、加盐和解密_小川叔的博客-程序员秘密

技术标签: java md5加盐加密  

加盐方式:0-9的数字中把0和9交换、1和8交换、2和7交换……

使用第三方的commons-codec jar包

下载地址:

dist.apache.org

release/->commons/->codec/->binaries/->commons-codec-1.12-bin.zip

www.apache.org

commons/->codec/->Download->commons-codec-1.12-bin.zip

下载后解压缩找到commons-codec-1.12.jar,在eclipse项目中新建一个lib文件夹,把jar包复制进去,右键build path–add to build 。

package com.oracle.core;

import org.apache.commons.codec.digest.DigestUtils;

public class Md5Utils

{

public static void main(String[] args)

{

new Md5Utils().md5salt();

}

public void md5(){

String keyword="i love you";

String s=DigestUtils.md5Hex(keyword);

System.out.println(s);

}

public void md5salt()

{

String keyword="i love you";

String md5=DigestUtils.md5Hex(keyword);

System.out.println("md5加密后:"+"\n"+md5);

String md5salt=md5PlusSalt(keyword);

System.out.println("加盐后:"+"\n"+md5salt);

String word= md5MinusSalt(md5salt);

System.out.println("解密后:"+"\n"+word);

}

public String md5PlusSalt(String keyword)

{

String md5=DigestUtils.md5Hex(keyword);

char[]cArray=md5.toCharArray();

for(int i=0;i=48&&cArray[i]<=57)

{

cArray[i]=(char)(105-cArray[i]);

}

}

return "".valueOf(cArray);

}

public String md5MinusSalt(String md5)

{

char[]cArray=md5.toCharArray();

for(int i=0;i=48&&cArray[i]<=57)

{

cArray[i]=(char)(105-cArray[i]);

}

}

return "".valueOf(cArray);

}

}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33772728/article/details/114103906

智能推荐

UITableViewCell中 setSelected 的坑_悠悠悠哉e的博客-程序员秘密

setSelected:animated:方法实现了,可以满足在当前cell里处理cell的点击事件。有好些无需数据交互的事件放在这里处理看上去很简洁,妙哉。但是!当滚动tableview,cell被重用的时候,会导致setSelected:animated:多次调用。如何不在解决呢?1、老老实实的实现 tableView: didSelectRowAtIndexPath: 方法。这...

剑指offer——圆圈中最后剩下的数字(孩子们的游戏)_蛋淡的忧伤的博客-程序员秘密

题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去.....

Debug Assertion Failed!_m_star_jy_sy的博客-程序员秘密

Microsoft Visual C++ Debug LibraryDebug Assertion Failed!Program:E:\gyb.2.5\hotfoxd.exeFile:dbgdel.cppLine:52Expression:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)对话框如下图所示: 该对话框为调式环境下断言失败提示

惠普服务器硬件检测软件吗,惠普硬件检测工具DST HP PC Hardware Diagnostics UEFI 6.8.0.0 Rev.A 使用方法..._意大利卢卡的博客-程序员秘密

产品描述/产品详情:该软件包可为支持的型号和操作系统提供 HP PC Hardware Diagnostics UEFI。HP PC Hardware Diagnostics UEFI 可为支持的型号提供基于 UEFI 的硬件诊断,用于验证系统是否可以正常运行。此外,还提供了其它支持,以更新和管理系统 BIOS 和系统上的其它设备固件。----------------当前更新-----------...

python-12-调用Shell命令和获取命令行参数_python调用shell脚本并传递参数_皮皮冰燃的博客-程序员秘密

os模块的popen方法当需要得到外部程序的输出结果时,本方法非常有用,返回一个类文件对象,调用该对象的read()或readlines()方法可以读取输出内容。os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等 如a=os.popen(cmd).read()文件test.pyimport sysx = sys.stdinfor line in x: print("receive",line)文件main.pyimport osa

MySQL索引失效的几种场景_lxw1844912514的博客-程序员秘密

我们都知道建立索引能够提高查询效率,那么是不是任何情况下都能提高呢,当然不是的的,下面我们就来列举一些常见的索引失效的场景。借用上一篇文章的dm_person_info表在card_code列没加索引的时,查询时间如下,大概都在0.07秒。我们来加上索引试试,加上后查询效率高了许多。在正确使用索引的情况下,查询一行数据的时间不到10毫秒,所以显示0.00 sec .1.列类...

随便推点

1.Python浅复制和深复制——copy和deepcopy方法_kakahub的博客-程序员秘密

随笔 - 45  文章 - 1 评论 - 58 【Python百知百问】1.Python浅复制和深复制——copy和deepcopy方法问题:Python里面如何拷贝一个对象?  参考:《Python Cookbook》 参考链接:http://blog.csdn.net/sharkw/article/detail

csdn相关原创博文_Yao-Blog的博客-程序员秘密

2012年8月21号开始了我的第一篇博文,也开始了我的研究生生涯。怀着对机器学习和计算机视觉等等领域的懵懂,从一个电子材料的领域跨入这个高速发展的人工智能领域。从开始的因无知而惊慌,因陌生而乏力,到一步步的成长。这过程的知识积累也都大部分反映在这个博客上面了。感谢这个平台促使自己去总结去坚持去进步。也感谢这个平台给我带来了和大家交流的机会。借此博文总结自己过去与未来可能散乱的博文。在此也谢谢大家一

3.Maven 的常用命令_llsses的博客-程序员秘密

Maven 的常用命令 1 2 3 4 5 1、mvn compile 编译,将Java 源程序编译成class字节码文件。 2、mvn test 测试,并生成测试报告 3、mvn clean 将以前编译得到的旧的class字节码文件删除 4、mvn pakage 打包,动态 web工程打 war包,J...

html5 settimeout,计时器setTimeout()_诺xy世的博客-程序员秘密

setTimeout(代码,延迟时间);参数说明:1. 要调用的函数或要执行的代码串。2. 延时时间:在执行代码前需等待的时间,以毫秒为单位(1s=1000ms)。当我们打开网页3秒后,在弹出一个提示框,代码如下:setTimeout("alert('Hello!')", 3000 );当按钮start被点击时,setTimeout()调用函数,在5秒后弹出一个提示框。function tinfo...

three.js使用CubeCamera创建反光效果,动态环境贴图实现,立方体全景贴图(vue中使用three.js83)_点燃火柴的博客-程序员秘密

使用CubeCamera创建反光效果1.demo效果2. 实现要点2.1 创建立方体相机CubeCamera2.2 使用动态环境贴图材质2.3 render中更新立方体相机2.4 创建场景的全景贴图2.5 创建场景中的模型3. demo代码1.demo效果2. 实现要点2.1 创建立方体相机CubeCamera创建立方体的语法如下const cubeCamera = new THREE.CubeCamera( near, far, cubeRenderTarget)参数说明near

步进电机的细分控制_42步进电机细分控制_chungle2011的博客-程序员秘密

摘要: 步进电机的细分控制是由驱动器精确控制步进电机的相电流来实现的,以二相电机为例,假如电机的额定相电流为3A,如果使用常规驱动器(如常用的恒流斩波方式)驱动该电机,电机每运行一步,其绕组内的电流将从0突变为3A ...      步进电机的运行性能与它的步进驱动器有密切的联系,可以通过驱动技术的改进来克服步进电机的缺点。相对于其他的驱动方式,细分驱动方式不仅可以减小步进电机的步距角

推荐文章

热门文章

相关标签