链接地址:https://blog.csdn.net/ma1kong/article/details/2662997 1.查看MessageDigest源码的注释说明 2.和hash一致性算法 什么关系 3.使用场景…
MessageDigest的功能及用法 MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法.信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值. MessageDigest 对象开始被初始化.该对象通过使用 update()方法处理数据.任何时候都可以调用 reset()方法重置摘要.一旦所有需要更新的数据都已经被更新了,应该调用digest() 方法之一完成哈希计算. 对于给定数量的更新数据,digest 方法只能被调用一次.在…
MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法.信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值. MessageDigest 对象开始被初始化.该对象通过使用 update()方法处理数据.任何时候都可以调用 reset()方法重置摘要.一旦所有需要更新的数据都已经被更新了,应该调用digest() 方法之一完成哈希计算. 对于给定数量的更新数据,digest 方法只能被调用一次.在调用 digest 之后,Message…
import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.StringUtils; import java.util.*; /** * 一致性hash */ public class ConsistentHashWithVirtualNode { /** * 待添加入Hash环的服务器列表 */ private static String[] SERVERS = {"192.168.1.2:6379&…
xmlrpc .  https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很少,针对xmlrpc的有但是基本都是http协议的,https下的认证处理比较麻烦,而且会话保持也是基本没有太多共享,所以本人决定结合xmlrpc\bugzilla官方文档,网友文章,结合个人经验总结而成,已经在window2007 64+jdk7位机器上调试通过 手把手教你如何实现: 第一步: 在…
目录(?)[-] 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 概述 2 验证码生成器 3 控制器使用验证码 如 CodeController 应用 1 loginhtml 2 Controller 4 实现思路   1. 加密解密 1.1 前端js加密概述 对系统安全性要求比较高,那么需要选择https协议来传输数据.当然很多情况下一般的web网站,如果安全要求…
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些资料将加密直接分为对称加密和非对称加密). 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文.而单向加密只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算是加密的一种,应该算是摘要算法吧.具体区分可以参考: (本人解释不清呢 …… ) http://secur…
项目中用到js MD5加密和后台java MD5加密,刚开始加密后两个不一致,网上找了好久终于找到一个啦,记下来: md5.js /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message * Digest Algorithm, as defined in RFC 1321. * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. * Other co…
原文 java c# 加密与解密对照 最近一直烦恼,java , c# 加密的不同,然后整理了一下,留个备份的轮子: 其中在 java.c#加密转换时,最重要的是 IV 的确定,我常常用如下方法使得java和c#之间的 IV 可以转换: 将其中某个 IV 数组转为 10进制后,在转换为相应的 byte数组就好了.10进制数组成为 java.c# 中IV转换的桥梁了.最后分别有java(我用myeclipse)和c#的编译器(SharpDevelop2很轻量级的编译器,但是运行代码后需要在后面写上…
Gallery与之前讲的Spinner有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列表框.他们之间的区别在于Spinner显示的是一个垂直的列表框,而Gallery显示的是一个水平的列表框.Gallery与Spinner有一个区别:Spinner的作用是供用户选择,而Gallery则允许用户通过拖动来查看上一个.下一个列表项. Gallery常用的XML属性及相关方法 XML属性 相关方法 说明 android:animationDuration setAnim…
[转]Java学习之Iterator(迭代器)的一般用法 (转) 迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构.迭代器通常被称为“轻量级”对象,因为创建它的代价小. Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元素.注意:iterator()方法是java.l…
StackView也是AdapterViewAnimator的子类,它也用于显示Adapter提供的系列View.SackView将会以“堆叠(Stack)”方式来显示多个列表项. 为了控制StackView显示的View组件,StackView提供了如下两种控制方式. 拖走StackView中处于顶端的View,下一个View将会显示出来.将上一个View拖进StackView,将使之显示出来. 通过调用StackView的showNext().showPrevious()控制显示上一个.下一…
使用Virbox Protector对Java项目加密有两种方式,一种是对War包加密,一种是对Jar包加密.Virbox Protector支持这两种文件格式加密,可以加密用于解析class文件的java.exe,并且可以实现项目源码绑定制定设备,防止部署到客户服务器的项目被整体拷贝. 两种加密方式 War 包加密 当你的项目在没有完成竣工的时候,不适合使用 war 文件,因为你的类会由于调试之类的经常改,这样来回删除.创建 war 文件很不爽,最好是你的项目已经完成了,不改了,那么就打个 w…
你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面的那条线路称为线路1,下面的称为线路2. 思路1 先判断线路1的第一个节点的下级节点是否是线路2的第一个节点,如果不是,再判断是不是线路2的第二个,如果也不是,判断是不是第三个节点,一直到最后一个.如果第一轮没找到,再按以上思路处理线路一的第二个节点,第三个,第四个... 找到为止.时间复杂度n2,…
开发中遇到md5加密不一致问题,排除了上下文编码,加密内容问题. 爬了各类资料,最终找到了原因. /** 对字符串进行MD5加密 */ private static String encodeByMD5(String originString) { if (originString != null) { try { // 创建具有指定算法名称的信息摘要 MessageDigest md = MessageDigest.getInstance("MD5"); // 使用指定的字节数组对摘…
PHP AES加密 <?php ini_set('default_charset','utf-8'); class AES{ public $iv = null; public $key = null; public $bit = 128; private $cipher; public function __construct($bit, $key, $iv, $mode) { if(empty($bit) || empty($key) || empty($iv) || empty($mode…
Java Base64加密.解密原理Java代码 转自:http://blog.csdn.net/songylwq/article/details/7578905 Base64是什么: Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递较长的标识信息.例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为…
java抽象类与接口的区别及用法 一.抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明. 二.接口是设计的结果 :抽象类是重构的结果 . 三.java不支持多重继承,所以继承抽象类只能继承一个,但是可以实现多个接口. 1. 接口是核心,其定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做. 2. 如果许多类实现了某个接口,那么每个都要用代码实现那些方法 3. 如果某一些类的实现有共通之处,则可以抽象出来一个抽象类,让抽象类实现接口的公用的代码,而那些个性化的方法则由各个子…
Java AES 加密 加密 /** * * @description 加密 * * @param content 需要加密的内容 * @param password 加密密码 * @return */ public static byte[] encrypt(String content, String password) { try { //创建AES密钥生成器 KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");…
java对称加密(AES) 博客分类: Java javaAES对称加密  /** * AESHelper.java * cn.com.songjy.test * * Function: TODO * *   ver     date           author * ────────────────────────────────── *           2012-6-29      songjianyong * * Copyright (c) 2012, TNT All Rights…
转自http://www.cnblogs.com/zhuiyi/archive/2013/04/01/2993201.html 最近被DES加解密弄得超级郁闷,我用C#的方法加密得到的密文老是跟客户给的Java的加密密文不同,找了很多资料都没有得到解决.直到看到上面的博文,才解决掉这个问题.这里mark一下,以免忘记! 先来个C#版的: public class DESHelper { /// <summary> /// DES加密算法 /// </summary> /// <…
转自 microAllen   最近需要使用C#的DES解密工具类解密字符串,但是要解密的字符串是使用java进行DES加密的,去网上查了关于C#和java关于DES加密解密的资料,发现可以相互加密解密的时候,java进行DES加密一般都会写成如下:public static byte[] encrypt(String message, String key) throws Exception {     Cipher cipher = Cipher.getInstance("DES/CBC/P…
原文:JAVA中的break[标签]continue[标签]用法 注意:JAVA中的标签必须放在循环之前,且中间不能有其他语句.例如:tag:for或while或do--while; 1.使用break退出一层循环(与C/C++中的break用法一样) public static void main(String args[]) { int i=0; while(i<100) { if(i==10) break; System.out.println("i="+i); i++;…
JProtector    专业的java项目加密工具 JProtector简介: JProtector 专业的java项目加密工具.目前java开发的项目发布的时候需要将项目发布到用户手中,但由于一些知识产权.公司商业技术保密等原因,不希望一些核心代码被人破解,这时需要对这些java代码进行加密处理,不能被反编译.对于那些共享收费的软件,对于代码保护非常重要. 目前对于java项目的保护流行两种加密技术: 代码混淆加密: 通过对java源代码进行代码混淆处理,将代码结构打乱,并且加入一些随机或…
SearchView是搜索框组件,它可以让用户在文本框内输入汉字,并允许通过监听器监控用户输入,当用户用户输入完成后提交搜索按钮时,也通过监听器执行实际的搜索. 使用SearchView时可以使用如下常用方法. setIconifiedByDefault(boolean iconified):设置该搜索框默认是否自动缩小为图标. setSubmitButtonEnabled(boolean enabled):设置是否显示搜索按钮. setQueryHint(CharSequence hint):…
数值选择器用于让用户输入数值,用户既可以通过键盘输入数值,也可以通过拖动来选择数值.使用该组件常用如下三个方法. setMinValue(int minVal):设置该组件支持的最小值. setMaxValue(int maxVal):设置该组件支持的最大值. setValue(int value):设置该组件的当前值. 下面通过一个实例来介绍NumberPicker的功能与用法. 实例:选择您意向的价格范围 在该实例中,程序将使用两个NumberPicker来让用户选择价格,第一个Number…
日历视图(CalendarView)可用于显示和选择日期,用户既可选择一个日期,也可通过触摸来滚动日历.如果希望监控该组件的日历改变,可调用CalendarView的setOnDateChangeListener()方法为此组件的点击事件添加事件监听器. 下面通过实例来示范CalendarView组件的功能与用法.  实例:选择您的生日      布局文件如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/…
星级评分条与拖动条有相同的父类:AbsSeekBar,因此它们十分相似.实际上星级评分条与拖动条的用法.功能都十分接近:它们都是允许用户通过拖动条来改变进度.RatingBar与SeekBar最大区别在于:RatingBar通过星星来表示进度. 为了让程序能响应星级评分条评分的改变,程序可以考虑为它绑定一个OnRatingBarChangeListener监听器. 下面通过一个实例来示范RatingBar的功能和用法. 实例:通过星级改变图片的透明度        该程序其实只是前一个程序的简单…
拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程序,而拖动条则通过滑块的位置来标识数值——而且拖动条允许用户拖动滑块来改变值,因而拖动条通常用于对系统的某种数值进行调节,比如调节音量等. SeekBar允许用户改变拖动条的滑块外观,改变滑块外观通过如下属性来指定. android:thumb:指定一个Drawable对象,该对象将作为自定义滑块. 为了让程序能响应拖动条滑块位置的改变,程序可以程序可以考虑为它绑定一个OnSeekBarChangeListener监听器. 下面通过…
JAVA实现双向链表的增删功能,完整代码 package linked; class LinkedTable{ } public class LinkedTableTest { //构造单链表 static Node node1 = new Node("name1"); static Node node2 = new Node("name2"); static Node node3 = new Node("name3"); static Node…