`

继续谈谈java中的Key

    博客分类:
  • Key
 
阅读更多

1.KeyGenerator的使用。

如下

static Key genKey(byte[] key){
		//获取AES算法的KeyGenerator实例对象
		KeyGenerator kg = KeyGenerator.getInstance("AES");
		//获取SecureRandom对象
		SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
		//设置种子
		random.setSeed(key);
		//初始化key生成器
		kg.init(128, random);
		//获取秘钥对象
		SecretKey secretKey = kg.generateKey();
		//获取秘钥字节数组
		byte[] enCodeFormat = secretKey.getEncoded();
		//返回使用AES秘钥加密的对象
		return new SecretKeySpec(enCodeFormat,"AES");
}

 

2 MessageDigest类使用,

消息摘要是采用任意大小的数据并输出固定长度散列值的安全单向散列函数

javadoc中支持的算法有:

<p> Every implementation of the Java platform is required to support
 * the following standard {@code MessageDigest} algorithms:
 * <ul>
 * <li>{@code MD5}</li>
 * <li>{@code SHA-1}</li>
 * <li>{@code SHA-256}</li>
 * </ul>

 但是java平台支持的摘要算法远远不止这些。

//MessageDigest对象初始化

MessageDigest md = MessageDigest.getInstance("MD5");

//摘要计算

byte[] result =  md.digest(byte[]  data)

 

 

SHA-256 加密返回的字节数组长度固定为32,一个字节长度是8位 ,32*8=256位,SHA256 算法的哈希值大小为 256 位。

 

以下两段代码的意思一样:

//转为两位的16进制
byte b = -5;
//将一个负数转化为256+b
Integer.toString(( b & 0xff) + 0x100, 16).subString(1)
//转为两位的16进制
String str;
String tempStr = (Integer.toHexString(b & 0xff));
if (tempStr.length() == 1) {
    str = str + "0" + tempStr;
}
else {
    str = str + tempStr;
}

 

 

分享到:
评论

相关推荐

    谈谈Java中遍历Map的几种方法

    java中的map遍历有多种方法,从早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点。  先初始化一个map public class TestMap {  public static Map&lt;Integer&gt;...

    JAVA课程设计-计算器可响应键盘

    在Java中,我们可以通过实现KeyListener接口或者使用Key Bindings来监听键盘输入。KeyListener包含三个方法:keyPressed、keyReleased和keyTyped。我们可以根据用户按下哪个键来更新计算器的状态。例如,当用户按下...

    面试官:详细谈谈Java对象的4种引用方式

    例如,ThreadLocal 中的 key 就用到了弱引用。 幻象引用 幻象引用也称虚引用,是通过 PhantomReference 类实现的。任何时候可能被 GC 回收,就像没有引用一样。幻象引用无法通过虚引用访问对象的任何属性或者函数...

    Java 数字签名、数字证书生成源码.zip

    Java 数字签名与数字证书是网络安全领域中的重要概念,它们在确保数据的完整性和来源的可信性方面扮演着关键角色。数字签名是一种非对称加密技术的应用,它能够验证消息或文档是否被篡改,而数字证书则用来绑定公钥...

    基于Java的修改表头加密数据库.zip

    在Java编程环境中,修改表头和加密数据库是两个重要的任务,它们涉及到数据处理和安全性的核心问题。在本文中,我们将深入探讨这两个概念,并提供相关的技术实现和注意事项。 首先,让我们来谈谈“修改表头”。在...

    绝对使用的JAVA程序片段

    首先,我们来谈谈Java中的异常处理。在Java程序中,异常处理是非常重要的一部分,它可以帮助我们更好地管理程序运行时可能出现的问题。通过使用try-catch-finally结构,我们可以捕获并处理潜在的错误,保证程序的...

    java 加密(3DES和交换)

    在Java中,我们可以使用`javax.crypto.Cipher`类以及`java.security.Key`接口来实现3DES的加密和解密操作。创建一个3DES密钥需要使用`SecretKeyFactory`和`KeySpec`,例如`PBEKeySpec`或`DesedeKeySpec`。 接下来,...

    一个简单的文件加密器(java)

    在Java中,可以使用Java Cryptography Architecture (JCA) 和 Java Cryptography Extension (JCE) 来实现加密算法。常见的加密方式有对称加密(如AES)和非对称加密(如RSA)。对称加密使用相同的密钥进行加密和解密...

    文件压缩zip并进行加密

    在Java编程语言中,我们可以利用内置的`java.util.zip`包来实现文件的压缩和解压缩,包括对压缩文件进行加密。这个话题的焦点是"文件压缩zip并进行加密",我们将深入探讨如何在Java中实现这一功能。 首先,让我们...

    liunx deploy下的centos安装java与MySQL.pdf

    首先,让我们来谈谈Java的安装。在CentOS上安装Java通常通过使用`yum`包管理器进行。但在这之前,我们需要禁用`yum`的某些插件,因为它们可能会影响安装过程。打开`/etc/yum.conf`文件,找到包含`plugins`这一行,并...

    Java面试框架高频问题2019

    - 注解是Java语言的一个特性,用于在代码中添加元数据。Spring框架利用反射机制读取和解析注解,从而实现特定的功能。 #### MyBatis面试高频问题 **问题一:什么是Mybatis?** - **MyBatis**是一个优秀的持久层...

    Jqury-ajax.rar_java html 交互_jqury _jqury ajax html

    在“jQuery-ajax.rar”这个压缩包中,我们很显然会涉及到使用jQuery进行AJAX(Asynchronous JavaScript and XML)操作,以及与Java后端进行数据交互,特别是HTML页面与Java Servlet的通信。下面,我们将深入探讨这些...

    java公司面试题

    ### 谈谈你对团队意识的理解 团队意识是指团队成员之间相互协作、共同努力实现共同目标的态度和行为。在IT行业中,良好的团队合作至关重要。每个成员都应该具备责任感和使命感,积极主动地与他人沟通交流,互相帮助...

    Core Java 简单谈谈HashSet(推荐)

    当尝试向HashSet中添加元素时,它实际上是将元素作为HashMap的键(Key),而值(Value)则使用了一个静态final对象PRESENT。当尝试添加相同的元素时,HashMap会根据元素的hashCode和equals方法来决定是否已经存在...

    随机数生成和读取,以及排序比较

    在Java中,可以使用`Scanner`类从文件中读取数据。假设随机数已保存在文本文件中,每行一个数字,可以这样读取: ```java Scanner scanner = new Scanner(new File("random_numbers.txt")); while (scanner....

    sesvc.exe 阿萨德

    如果当前桶有值( Hash 冲突),那么就要比较当前桶中的 key、key 的 hashcode 与写入的 key 是否相等,相等就赋值给 e,在第 8 步的时候会统一进行赋值及返回。 如果当前桶为红黑树,那就要按照红黑树的方式写入数据...

    File工具类

    在Java编程语言中,`File`工具类是用于操作文件和目录的核心类,它位于`java.io`包中。这个类提供了许多方法来创建、读取、写入、删除文件以及管理目录结构。理解并熟练使用`File`类是每个Java开发者必备的技能。 ...

    两种方式解析json数据

    在Java中,你可以使用`org.json`库中的`JSONObject`类。假设我们有一个JSON字符串,我们可以通过创建一个`JSONObject`实例,然后使用`keys()`方法获取一个迭代器。以下是一个简单的例子: ```java import org.json....

    计算机软件-商业源码-二维数组,映射类.zip

    接下来,我们谈谈映射类,它在许多编程语言中表现为哈希表或者字典数据结构。映射类允许我们通过键(key)来查找、添加、删除对应的值(value),提供了O(1)的平均时间复杂度。在Java中,我们可以使用HashMap或...

    会话编程实例代码

    例如,将对象存储在会话中,可以使用`session.setAttribute("key", value)`,而获取或移除会话中的属性则用`session.getAttribute("key")`和`session.removeAttribute("key")`。 购物车功能的实现通常涉及到会话的...

Global site tag (gtag.js) - Google Analytics