今天在研究QQ登陆的时候又发现一个值是和上次bkn加密方式有点像的,然后这次似乎看到了名字Hash33 然后这里就做一个笔记吧,说不定下次还有用。 def hash33(t): e = 0 for i in range(len(t)): e += (e << 5) + ord(t[i]) return 2147483647
127.0.0.1:6379> hgetall user_1 1) "name" 2) "xiaoming" 3) "age" 4) "25" hdel hdel key field [field] 会删除一个或多个 integer) 1 127.0.0.1:6379> hlen user_1 (integer) 2 hmset hmset key field1 value1 filed2 value2 filed3 value3设置hash key 的一批filed对应的值 127.0.0.1:6379> hmset user_2 name xiaowang age 21 gender boy OK hmget hmget key field1 filed2 filed3 获取hash key 的一批filed对应的值 127.0.0.1:6379> hmget user_2 name age gender 1) "xiaowang " 2) "21" 3) "boy" hsetnx hsetnx key filed value设置hash key 对应的filed的value(如果已经filed则失败) 127.0.0.1:6379
获取某个hash 字段值 获取散列值的相关命令格式为 hget key field 【示例】 127.0.0.1:6379> hget hashtest f1 "v1" 3. 删除 hash 中的某个字段 删除 hash 中的某个字段的命令格式为 hdel key field [field ...] 批量设置与获取 hash 的值 批量设置 hash 的字段的命令格式为 hmset key field value [field value...] " 3) "k2" 4) "v2" 10. hash 的 field 的值自增 字段值自增的命令格式为 hincrby key field 或 hincrbyfloat key field 11. 计算 hash 的 field 的字符串长度 统计字符串长度的命令格式为 hstrlen key field Hash 的内部编码 hash 类型的内部编码有两种 ziplist (压缩列表) 和 hashtable
private static final String Algorithm = "DESede"; //3DES算法 private static byte[] ivs ********** Function: // encryptMode(byte[] src,byte[] key) Description: // 3DES_CBC_EN { e3.printStackTrace(); } return null; } /****************** ************* * Function: // decryptMode(byte[] src,byte[] key) Description: // * 3DES_CBC_DE { e3.printStackTrace(); } return null; }
Redis的Hash有点像一个对象(object),一个Hash里面可以存多个Key-Value对作为它的field,所以它通常可以用来表示对象。 Hash里面能存放的值也能作为String类型来存储,如果Hash里面值的类型可以解析为数字,那么也可以进行自增自减等操作。 ? 主要命令 Hash相关的命令都是以H开头。 HSET HSET 设置Hash里面的值: ? 格式为:hset hash-key field1 field1value field2 field2value ... 关于Hash的key的更实际用法是这样: ? 通常在Hash的Key中使用冒号:,这样可以做出来类似命名空间的效果。 user:1000可以表示ID为1000的用户。 HMGET HMSET可以设置Hash里多个Key的值,而HMGET可以通过Hash的多个Key获取其对应的值: ? 但是它不会返回Key。
一、3DES数据加密算法在线工具文档 1.1、3DES数据加密算法介绍 3DES数据加密算法是一种可逆的对称加密算法,也称三重数据加密算法(英语:Triple Data Encryption Algorithm 1.2、3DES数据加密算法安全 3DES块加密算法的设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的密码算法。 目前3DES作为DES的过渡算法已经逐渐被更安全的AES代替。 二、3DES数据加密算法在线工具使用须知 2.1、3DES的填充模式 块密码只能对确定长度的数据块进行处理,而消息的长度通常是可变的,因此需要选择填充模式。 区块长度:3DES规定区块长度只有一个值,固定为64Bit,对应的字节为8位; 密钥长度:3DES规定密钥长度只有两个值,128Bit、192Bit,对应的字节为16位和24位; 密钥KEY:该字段不能公开传输
来自ljgibbslf的github项目,知乎同名,欢迎star https://github.com/ljgibbslf/SM3_core 下面是项目的README SM3_core 国密 SM3 杂凑算法的硬件 算法与标准 SM3 是中国的杂凑密码算法国家标准,SM3 算法与 SHA、MD5 等算法同属于杂凑算法,又称哈希算法,散列算法等。 SM3杂凑算法是我国自主开发的密码算法,并于2016年上升为国家标准。 SM3算法采用Merkle-Damgård结构,消息分组长度512比特,摘要结果长度256比特。 SM3 算法包括消息填充分组,消息扩展以及消息压缩三个步骤。 整体结构与 SHA-256 算法结构接近,但增加了多种新设计技术以提高安全性。 实现与测试 SM3_core 虽然最初为 FPGA 平台设计,但由于其本身不包括任何 FPGA IP 与原语,因此同样适用于 ASIC 平台。
0x01:DES3 DES3,通常指的是三重数据加密算法(Triple Data Encryption Algorithm,3DES)或称为Triple DES,是一种对称加密算法。 它提供了两种操作模式: 三密钥模式(3-key,也称作3TDEA) 加密过程:C = E(K3, D(K2, E(K1, P))) 解密过程:P = D(K1, E(K2, D(K3, C))) 在这种模式下 综上所述,虽然3DES在过去是一种可靠的加密选择,但考虑到当前的安全标准和计算能力的发展,建议评估并转向更先进的加密算法,如AES。 0x02:AES AES(Advanced Encryption Standard,高级加密标准)是一种对称加密算法,它被广泛用于各种安全领域,包括网络安全、文件加密、磁盘加密等。 0x03:RSA RSA是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman于1977年提出,也因此得名。
应用场景 Hash也可以同于对象存储,比如存储用户信息,与字符串不一样的是,字符串是需要将对象进行序列化(比如json序列化)之后才能保存,而Hash则可以讲用户对象的每个字段单独存储,这样就能节省序列化和反序列的时间 第一维 hash 的数组位置碰撞时,就会将碰撞的元素使用链表串接起来。 存在且旧值已被覆盖,返回 0 > HSET myhash 1 zhangsan 2 lisi 3 wangwu (integer) 3 不存在时创建(HSETNX) # 成功,返回 1 。 不存在,返回空列表 # HKEYS key > HKEYS myhash 1) "1" 2) "2" 3) "3" 获取所有的值(HVALS) # 所有值的列表。 不存在时,返回空列表。 $i,$i); } HSCAN 查询 > HSCAN hash2 0 MATCH "key:99*" count 10000 1) "0" 2) 1) "key:9956" 2) "9956
在对称加密算法中,数据发信方将明文(原始数据)和加密密钥(mi yao)一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。 对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。 而与公钥、密钥加密算法比起来,对称加密算法能够提供加密和认证却缺乏了签名功能,使得使用范围有所缩小。 方式:每个填充的字节都记录了填充的总字节数 结果如下: F1 F2 F3 F4 F5 F6 F7 F8 //第一块 F9 07 07 07 07 07 07 07 //第二块 常用算法 对称加密算法主要有 已被视为并不安全的加密算法。 因此,非对称加密算法也称为双钥加密算法或公钥加密算法。 特点 优点 非对称加密算法解决了对称加密算法的密钥分配问题,并极大地提高了算法安全性。
加密算法是旅居瑞士中国青年学者来学嘉和著名密码专家J.Massey于1990年提出的。它在1990年正式公布并在以后得到增强。 类似于DES,IDEA算法也是一种数据块加密算法,它设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。与DES的不同处在于,它采用软件实现和采用硬件实现同样快速。 64-位数据分组被分成4个16-位子分组:xl,X2,x3,x4。这4个子分组成为算法的第一轮的输入,总共有8轮。 (3)X3和第三个子密钥相加。(4)X4和第四个子密钥相乘。(5)将第(1)步和第(3)步的结果相异或。·(6)将第(2)步和第(4)步的结果相异或。(7)将第(5)步的结果与第五个子密钥相乘。 (3) X3和第三个子密钥相加。(4) X4和第四个子密钥相乘。最后,这4个子分组重新连接到一起产生密文。产生子密钥也很容易。这个算法用了52个子密钥(8轮中的每一轮需要6个,其他4个用与输出变换)。
这里先讲解 Hash函数。 Hash函数 从上面的图可以观察到,中间的部分的部分为 Hash函数,也称为散列函数。它在散列表中起着关键作用。 Hash函数一般使用 hash(key)表示,其中 key表示元素的键值部分, hash(key)的表示经过 Hash函数计算得到的 Hash值(散列值)。 不同的应用实例 Hash函数不同,该怎么去构造 Hash函数,一般遵循一下三条: Hash函数计算得到的散列值是一个非负整数; 如果 key1==key2,那么 hash(key1)==hash(key2 =key2,那么 hash(key1)!=hash(key2). 对于第一条很好理解,因为数组的下标是从0开始,所以 Hash函数生成的 Hash值也需要是非负整数。 对于第二条,相同的 key经过 Hash函数处理后得到的 Hash值应该也是相同的。
map = new HashMap<>(); map.put("key1",value1); map.put("key2", value2); //以上代码在初始化map是会先调用hashmap中的hash ()方法,且hashmap的初始数据结构为数组加链表的结构体系 static final int hash(Object key) { int h; return (key ; final K key; V value; Node<K,V> next; Node(int hash, K key, V value , Node<K,V> next) { this.hash = hash; this.key = key; this.value ; //可以看出hashmap和hashtable在获取hash整型后存入的数组下标的地址的获取方法存在差异 //hashmap存在最坏情况,即所有的值通过hash整数与数组长度的位运算存入的index
一、DES加密算法 1.1 原理 DES是一种对称加密算法,它使用相同的密钥进行加密和解密操作。 二、3DES加密算法 2.1 原理 3DES(Triple DES)是DES算法的一种改进版本,旨在提高安全性。它使用三个不同的密钥对明文进行三次DES加密操作。 2.3 Java中的应用 3DES是一种应用三重数据加密算法对数据进行加密的方法,它通过三次应用DES算法来提高安全性。 总结 本文详细介绍了Java中的DES和3DES加密算法的原理、特点以及在Java中的应用。虽然DES算法由于其安全性较低已经逐渐被淘汰,但在某些特定场景下仍然可以使用。 而3DES算法作为DES的改进版本,提供了更高的安全性,但加密速度较慢和密钥管理较复杂的问题也需要考虑。在实际应用中,建议根据具体的安全需求和性能要求选择合适的加密算法。
一、hash_set 由于hash_set底层是以hash table实现的,因此hash_set只是简单的调用hash table的方法即可 与set的异同点: hash_set与set都是用来快速查找元素的 但是set会对元素自动排序,而hash_set没有 hash_set和set的使用方法相同 在介绍hash table的hash functions的时候说过,hash table有一些无法处理的类型 SGI内部采用质数193 Set.insert(3); //实际大小为193 Set.insert(196); Set.insert(1); Set.insert(389); Set.insert(194 = Set.end(); ++iter) std::cout << *iter << ""; //387 194 1 389 196 3 std::cout << std::endl; return 0 二、hash_map 由于hash_map底层是以hash table实现的,因此hash_map只是简单的调用hash table的方法即可 与map的异同点: hash_map与map都是用来快速查找元素的
primeNum[0], primeNum[1], primeNum[2]); System.out.println(key); System.out.println("============3. ((char)ch+" "+ch+"\t"+b+" "+(char)b.longValue()); } return new String(sb); } /** * 3. System.out.println((char)ch+" "+ch+"\t"+b+" "+(char)b.longValue()); } return new String(sb); } /** * 3.
一、常见的加密算法: 可逆算法:一种可以将加密后的密文还原为原始明文的算法。 对称算法:对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。 单向散列(hash)加密:是指把任意长的输入串变化成固定长的输出串,并且由输出串难以得到输入串的加密方法。广泛应用于对敏感数据加密,比如用户密码,请求参数,文件加密等。 1.BCrypt(最推荐) 2.Argon2(更安全,但需第三方库) 3. BCryptPasswordEncoder(); return passwordEncoder.matches(rawPassword, encodedPassword);// 密码匹配 } 3. Getter @Setter public class R<T> { private int code; //定义一些固定的code,前后端商量好的 0 1 请求成功 常量 2 3
sm4 const sm2 = require('sm-crypto').sm2 sm2加密: sm2加密类似RSA,有公钥和私钥,这里前端使用公钥加密,加密有两种模式,适配后端这里改为C1C2C3模式 undefined 需要注意的是,这里的加密结果不能直接返回后台,需要在前面加上04表示公钥未压缩 const cipherMode = 0 // 1 - C1C3C2,0 - C1C2C3,默认为1 sm2Encrypt(data) { // sm2加密密钥 return '04' + sm2 0477109887984ca6250635e6e30a58d11efe71abd998271808ec611366197698106b128ef699fe7fa09449bb7ca9527d674cc865a93a4e3593770ecd3ab06291aee81f5459b8500c284e5391956a83ddb2a90f298968a97828b0802749d5e5bbaa1c519489d4a37215ae0d5f7ef0b3a9a2e8dc1ce485544397a66923811c2f44a0 = new SM2(ECKeyUtil.toSm2PrivateParams(privateKey), null); sm2.setMode(SM2Engine.Mode.C1C2C3)
公式 公钥 KU n:两素数p和q的乘积(p和q必须保密)。 e:与(p-1)(q-1)互质的数。 p和q可以使用工具yafu得出 私钥 KR d: e^-1 mod (p-1)(q-1) 的结果 n:同上 密文 c = m^e mod n 明文 m = c^d mod n 脚本 已知 公钥(n, e) 和 密文 c 求 明文 m? import gmpy2 import binascii n = 4154220405062524632278989171077190153188438109 # p
直接使用Hash 那么目前最优的解决方案就是使用密码的Hash值进行验证 客户端 直接将用户输入的密码进行Hash运算,得到结果发送给服务器验证.因为Hash算法无法逆运算,所以就算Hash值泄露, 那么我们这种加密.无论你怎么玩.妥妥的都是给服务器一个Hash串进行验证啊,也就是我只需要拿到你的Hash值.那么我只要模拟你客户端进行登录是再简单不过了. Hash串+@"201807102249")Hash.这次不通过再来一次 (服务器的Hash串+@"201807102248")Hash.和上一分钟对比,一次通过算成功 这样的好处,可以做到每登录发送给服务器的 Hash值是不一样的.黑客不能通过保存Hash值模拟登录. 这样的网站,在你上传视频的时候,它会将文件的Hash值保存.当其他的网站上传这个视频,那么看是否是正版,就是对比文件的Hash值.