java加密算法

aes-128-gcm 不需要传iv的加密方式和解密 1.nodejs 版本 var crypto = require("crypto"); /*** * @version 1.0 aes-128-gcm 加密 * @params msg 为加密信息 password为32位的16进制key * @return 返回base64编码 * */ function Encrypt(msg, password) { try { var pwd = Buffer.from(password, 'hex'); 阅读详情
 
  1.   
  1. Base64可以解密、MD5、SHA、不行、也算不上是加密算法!  
  1. package com.boxun.crm.test;  
  2.   
  3. import java.security.MessageDigest;  
  4.   
  5.   
  6. import javax.crypto.KeyGenerator;  
  7. import javax.crypto.Mac;  
  8. import javax.crypto.SecretKey;  
  9. import javax.crypto.spec.SecretKeySpec;  
  10.   
  11. import sun.misc.BASE64Decoder;  
  12. import sun.misc.BASE64Encoder;  
  13.   
  14. public abstract class Base64Test {  
  15.   
  16.     private static final String KEY_MD5 = "MD5";  
  17.     private static final String KEY_SHA = "SHA";  
  18.     /**   
  19.      * MAC算法可选以下多种算法   
  20.      *    
  21.      * <pre>   
  22.      * HmacMD5    
  23.      * HmacSHA1    
  24.      * HmacSHA256    
  25.      * HmacSHA384    
  26.      * HmacSHA512   
  27.      * </pre>   
  28.      */    
  29.     public static final String KEY_MAC = "HmacMD5";     
  30.   
  31.     /**   
  32.      * BASE64解密   
  33.      *    
  34.      * @param key   
  35.      * @return   
  36.      * @throws Exception   
  37.      */    
  38.     public static byte[] decryptBASE64(String key) throws Exception {     
  39.         return (new BASE64Decoder()).decodeBuffer(key);     
  40.     }     
  41.   
  42.     /**   
  43.      * BASE64加密   
  44.      *    
  45.      * @param key   
  46.      * @return   
  47.      * @throws Exception   
  48.      */    
  49.     public static String encryptBASE64(byte[] key) throws Exception {     
  50.         return (new BASE64Encoder()).encodeBuffer(key);     
  51.     }  
  52.   
  53.   
  54.     /**   
  55.      * MD5加密   
  56.      *    
  57.      * @param data   
  58.      * @return   
  59.      * @throws Exception   
  60.      */    
  61.     public static byte[] encryptMD5(byte[] data) throws Exception {    
  62.         /**-- getInstance(String algorithm)返回实现指定摘要算法的 MessageDigest 对象  --*/  
  63.         MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);     
  64.         md5.update(data);     
  65.         return md5.digest();     
  66.     }   
  67.   
  68.   
  69.     /**   
  70.      * SHA加密   
  71.      *    
  72.      * @param data   
  73.      * @return   
  74.      * @throws Exception   
  75.      */    
  76.     public static byte[] encryptSHA(byte[] data) throws Exception {     
  77.         MessageDigest sha = MessageDigest.getInstance(KEY_SHA);     
  78.         sha.update(data);     
  79.         return sha.digest();     
  80.     }   
  81.   
  82.     /**   
  83.      * 初始化HMAC密钥   
  84.      *    
  85.      * @return   
  86.      * @throws Exception   
  87.      */    
  88.     public static String initMacKey() throws Exception {   
  89.         /**-- getInstance(String algorithm)返回生成指定算法的秘密密钥的 KeyGenerator 对象  --*/  
  90.         KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);  
  91.         /**-- generateKey()生成一个密钥  --*/  
  92.         SecretKey secretKey = keyGenerator.generateKey();   
  93.         /**-- secretKey.getEncoded()返回基本编码格式的密钥,如果此密钥不支持编码,则返回 null -- 
  94.          * encryptBASE64调用Base64加密方法 
  95.          */  
  96.         return encryptBASE64(secretKey.getEncoded());     
  97.     }     
  98.   
  99.     /**   
  100.      * HMAC加密   
  101.      *    
  102.      * @param data   
  103.      * @param key   
  104.      * @return   
  105.      * @throws Exception   
  106.      */    
  107.     public static byte[] encryptHMAC(byte[] data, String key) throws Exception {     
  108.         SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);     
  109.         Mac mac = Mac.getInstance(secretKey.getAlgorithm());     
  110.         mac.init(secretKey);     
  111.         return mac.doFinal(data);     
  112.     }  
  113.   
  114. }  
package com.boxun.crm.test;

import java.security.MessageDigest;


import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public abstract class Base64Test {

	private static final String KEY_MD5 = "MD5";
	private static final String KEY_SHA = "SHA";
	/**  
	 * MAC算法可选以下多种算法  
	 *   
	 * <pre>  
	 * HmacMD5   
	 * HmacSHA1   
	 * HmacSHA256   
	 * HmacSHA384   
	 * HmacSHA512  
	 * </pre>  
	 */  
	public static final String KEY_MAC = "HmacMD5";   

	/**  
	 * BASE64解密  
	 *   
	 * @param key  
	 * @return  
	 * @throws Exception  
	 */  
	public static byte[] decryptBASE64(String key) throws Exception {   
		return (new BASE64Decoder()).decodeBuffer(key);   
	}   

	/**  
	 * BASE64加密  
	 *   
	 * @param key  
	 * @return  
	 * @throws Exception  
	 */  
	public static String encryptBASE64(byte[] key) throws Exception {   
		return (new BASE64Encoder()).encodeBuffer(key);   
	}


	/**  
	 * MD5加密  
	 *   
	 * @param data  
	 * @return  
	 * @throws Exception  
	 */  
	public static byte[] encryptMD5(byte[] data) throws Exception {  
		/**-- getInstance(String algorithm)返回实现指定摘要算法的 MessageDigest 对象  --*/
		MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);   
		md5.update(data);   
		return md5.digest();   
	} 


	/**  
	 * SHA加密  
	 *   
	 * @param data  
	 * @return  
	 * @throws Exception  
	 */  
	public static byte[] encryptSHA(byte[] data) throws Exception {   
		MessageDigest sha = MessageDigest.getInstance(KEY_SHA);   
		sha.update(data);   
		return sha.digest();   
	} 

	/**  
	 * 初始化HMAC密钥  
	 *   
	 * @return  
	 * @throws Exception  
	 */  
	public static String initMacKey() throws Exception { 
		/**-- getInstance(String algorithm)返回生成指定算法的秘密密钥的 KeyGenerator 对象  --*/
		KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
		/**-- generateKey()生成一个密钥  --*/
		SecretKey secretKey = keyGenerator.generateKey(); 
		/**-- secretKey.getEncoded()返回基本编码格式的密钥,如果此密钥不支持编码,则返回 null --
		 * encryptBASE64调用Base64加密方法
		 */
		return encryptBASE64(secretKey.getEncoded());   
	}   

	/**  
	 * HMAC加密  
	 *   
	 * @param data  
	 * @param key  
	 * @return  
	 * @throws Exception  
	 */  
	public static byte[] encryptHMAC(byte[] data, String key) throws Exception {   
		SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);   
		Mac mac = Mac.getInstance(secretKey.getAlgorithm());   
		mac.init(secretKey);   
		return mac.doFinal(data);   
	}

}
  1. 下面是main方法类:  
  1. <PRE class=java name="code">package com.boxun.crm.test;  
  2.   
  3. import java.math.BigInteger;  
  4.   
  5.   
  6. /** 
  7.  *  
  8.  * @author 旦旦而学 
  9.  * @version 1.0 
  10.  * @since 1.0 
  11.  */  
  12. public class CoderTest {  
  13.       
  14.     public void test() throws Exception {  
  15.         String inputStr = "单项加密";  
  16.         System.err.println("原值:\t" + inputStr);  
  17.   
  18.         byte[] inputData = inputStr.getBytes();  
  19.         String code = Base64Test.encryptBASE64(inputData);  
  20.   
  21.         System.err.println("BASE64加密后:\t" + code);  
  22.   
  23.         byte[] output = Base64Test.decryptBASE64(code);  
  24.   
  25.         String outputStr = new String(output);  
  26.   
  27.         System.err.println("BASE64解密后:\t" + outputStr);  
  28.   
  29.         // 验证BASE64加密解密一致性   
  30.         assertEquals(inputStr, outputStr);  
  31.   
  32.         // 验证MD5对于同一内容加密是否一致   
  33.         assertArrayEquals(Base64Test.encryptMD5(inputData), Base64Test  
  34.                 .encryptMD5(inputData),"MD5");  
  35.   
  36.         // 验证SHA对于同一内容加密是否一致   
  37.         assertArrayEquals(Base64Test.encryptSHA(inputData), Base64Test  
  38.                 .encryptSHA(inputData),"SHA");  
  39.   
  40.         String key = Base64Test.initMacKey();  
  41.         System.err.println("Mac密钥:\t" + key);  
  42.   
  43.         // 验证HMAC对于同一内容,同一密钥加密是否一致   
  44.         assertArrayEquals(Base64Test.encryptHMAC(inputData, key), Base64Test.encryptHMAC(  
  45.                 inputData, key),"HMAC");  
  46.   
  47.         BigInteger md5 = new BigInteger(Base64Test.encryptMD5(inputData));  
  48.         System.err.println("MD5:\t" + md5.toString(16));  
  49.   
  50.         BigInteger sha = new BigInteger(Base64Test.encryptSHA(inputData));  
  51.         System.err.println("SHA:\t" + sha.toString(32));  
  52.   
  53.         BigInteger mac = new BigInteger(Base64Test.encryptHMAC(inputData, inputStr));  
  54.         System.err.println("HMAC:\t" + mac.toString(16));  
  55.     }  
  56.   
  57.     private void assertArrayEquals(byte[] encryptMD5, byte[] encryptMD52,String type) {  
  58.         String out = "不一致" ;  
  59.         byte[] by = encryptMD5 ;  
  60.         byte[] by2 = encryptMD52 ;  
  61.         String byt = "" ;  
  62.         String byt2 = "" ;  
  63.         //转换成16进制数据   
  64.         for (int i = 0; i < by.length; i++) {  
  65.             byt += Integer.toHexString((by[i] & 0xFF) | 0x100).substring(1,3);  
  66.         }  
  67.         for (int i = 0; i < by2.length; i++) {  
  68.             byt2 += Integer.toHexString((by2[i] & 0xFF) | 0x100).substring(1,3);  
  69.         }  
  70.         if(byt.equals(byt2)){  
  71.             out = "一致" ;  
  72.         }  
  73.         System.out.println("验证"+type+"对于同一内容,同一密钥加密是否一致:"+out);  
  74.         System.out.println(byt + "  "+type+"  " + byt2);  
  75.     }  
  76.   
  77.     private void assertEquals(String inputStr, String outputStr) {  
  78.         String out = "不一致" ;  
  79.         if(inputStr.equals(outputStr)){  
  80.             out = "一致" ;  
  81.         }  
  82.         System.out.println("验证BASE64加密解密一致性:"+out);  
  83.     }  
  84.     /** 
  85.      * 2011-7-5上午10:43:51 
  86.      * @param args 
  87.      * @throws Exception  
  88.      */  
  89.     public static void main(String[] args) throws Exception {  
  90.         CoderTest te = new CoderTest();  
  91.         te.test();  
  92.     }  
  93.   
  94.   
  95.   
  96. }
java的rsa加密算法_用java编程实现RSA加密算法 RSA加密算法是目前应用最广泛的公钥加密算法,特别适用于通过Internet传送的数据,常用于数字签名和密钥交换。那么我今天就给大家介绍一下如何利用Java编程来实现RSA加密算法。一、RSA加密算法描述RSA加密算法是1978年提出的。经过多年的分析和研究,在众多的公开密钥加密算法中,RSA加密算法最受推崇,它也被推荐为公开密钥数据加密标准。由数论知识可知,若将一个具有大素数因子的合数进行分解是... 阅读详情

相关推荐

常用加密算法(Java实现)总结

1、Java的安全体系架构 Java中为安全框架提供类和接口。JDK 安全 API 是 Java 编程语言的核心 API,位于 java.security 包(及其子包),以及sun.securityAPI包(及其子包)中。设计用于帮助开发人员在程序中同时使用低级和高级安全功能。 JDK 1.1 中第一次发布的 JDK 安全中引入了“Java 加密体系结构”(JCA),指的是用于访问和开发 Jav...

zhaohong_bo的专栏 4612

前后端交互 使用msg-pack 加密方式

前后端加密交互效果

阿乐的博客 344

Paillier同态加密算法的java实现

Paillier,同态加密算法。java版。懂得都懂。找了很久,才找到下面的东西。 直接上链接。 http://www.csee.umbc.edu/~kunliu1/research/Paillier.html 稍微修改一下,代码如下。 /** * This program is free software: you can redistribute it and/or modif

watch_ch的博客 1万+

java双向加密算法_Java加密算法

Java加密算法有三种:1、单向加密算法2、对错加密算法3、非对称加密算法单向加密算法单向加密是不可逆的加密算法,加密的密文不能解密,常见的算法有MD5、SHA、HMAC。MD5(信息摘要算法)无论多长数据最后都编码成128位数据,同样数据一直一致。用途:可用做文件校验、密码加密、散列数据。代码:public staticString getMD5Str(String s) {try{Messag...

weixin_42509847的博客 900

python监听海康威视报警服务器

因为我使用海康威视摄像头是自带热成像的所以事件报警会上报两张图片,一张是RGB图像、另一张是热成像图像,因此使用。拿到的就是第一张RGB图像。可以点击测试,会显示。

qq_57018478的博客 1157

java 加密算法

对称加密:算法简单,性能高,但密钥管理较为困难。常见的如AESDES。非对称加密:使用公钥和私钥,安全性较高,但性能相对较差。常见的如RSA。哈希算法:用于验证数据完整性,生成固定长度的哈希值,常见的如SHA-256。Java 提供了强大的加密支持,可以通过包中的类来实现这些加密算法。

C18298182575的博客 2036

在Visual Studio中搭建Dynamo Python开发环境,效率飞一般的增长

在Visual Studio中搭建Dynamo Python开发环境,效率飞一般的增长

BIM的乐趣 1730

Java加密算法-加密算法汇总

如基本的单向加密算法:BASE64 严格地说,属于编码格式,而非加密算法MD5(Message Digest algorithm 5,信息摘要算法)SHA(Secure Hash Algorithm,安全散列算法)HMAC(Hash Message Authentication Code,散列消息鉴别码)复杂的对称加密(DES、PBE)、非对称加密算法:DES(Data Encryption Standard,数据加密算法)PBE(Password-based encryption,基于密码验证)RSA(算

qq_43842093的博客 1551

用 dism 合并与删除 wim 映像

一、合并 假设 installA.wim 有 3 个映像,installB.wim 有 1 个映像。 1、全部合并 将 installA.wim 中的 3 个卷映像合并到 installB.wim 中,这样 installB.wim 中的卷映像增加到 4 个。 dism/export-image/sourceimagefile:d:\installA.wim/sourceindex:1/destinationimagefile:d:\installB.wim dism/export-image/source

KefanWon的博客 5199

安鸾渗透测试平台-CTF系列-bash

工具Xshell 公网VPS接收反弹shell Xshell新手的下载及安装教程(超详细)_新手程序员攀爬之路的博客-优快云博客_xshell使用教程 Xshell连接后 #!/bin/bash cat ${0} while : do echo "$" read input output=`$input` 显示了一个文件,不过咋做呢?这里可能考察的是linux的语法 方法 输入bash 获得shell cat ${0} while : do .

AAAAAAAAAAAA66的博客 2689

java中的对称加密算法

对数据的加密算是一个老生常谈的话题了,加密的方式很多,java也为这些加密算法提供了支持。今天就来聊聊对称加密算法的java实现方式。本文对加密算法不了解也没关系,我会从0开始讲解,保证小白也能看懂。 一、引言 这段时间在写论文,所以题目就叫做引言吧,在开始对对称加密算法真正认识之前,我们先看另外一块知识。相信我们都学过计算机中的一种位运算,叫做与或非(高中的时候就讲过,不知道的就回去补补)。下面...

冯冬冬的博客 2218

RANSAC地面点分割:从原理到C++实战优化

本文深入解析RANSAC算法在点云地面分割中的原理与C++实战优化,涵盖动态迭代次数、自适应阈值等关键技巧,通过并行计算和内存访问优化提升性能,适用于激光雷达点云处理。

weixin_29015051的博客 277

AES加密算法java实现

转载自: https://blog.youkuaiyun.com/zyhlwzy/article/details/77948165 AES加密算法是密码学中的高级加密标准,该加密算法采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。这种加密算法是美国联邦政府采用的区块加密标准,这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。 过多...

weixin_40224981的博客 1140

VCSA 6.7证书过期别慌!手把手教你通过SSH修改系统时间恢复登录(附STS证书修复脚本)

本文详细介绍了VCSA 6.7证书过期的应急处理方案,包括通过SSH修改系统时间临时恢复登录、全面更新证书体系以及专项修复STS证书的实战步骤。文章还提供了后期验证和系统加固的建议,帮助运维人员有效应对证书过期问题,确保虚拟化平台的稳定运行。

weixin_31292729的博客 415

Moveit +Gazebo:搭建单臂机械臂仿真平台

Moveit +Gazebo:搭建单臂机械臂仿真平台

magic_invaid的博客 5290

java 加密算法的简单使用

加密算法的简单使用

qq_44818304的博客 623

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java常用的五种加密算法

666

weixin_70280523的博客 925

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

基于Java的IDEA加密算法探讨

  摘要:本文介绍了在JAVA环境下如何实现IDEA对称加密算法。由于电子商务和电子政务的普及,安全加密技术在其中应用非常广泛,对安全加密技术的要求也很高。目前在JAVA环境下实现IDEA加密具有很多的优势,因为JAVA是基于面向对象的编程语言,并且由于它的平台无关性能被大量应用于Internet的开发。  关键字:IDEA(Internation Data Encryption Algorith

键者天行 6012

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java加密算法分类与详解

本文详细介绍了Java中常见的加密算法分类与实现。加密算法主要分为五类:编码类(如BASE64)、哈希/摘要类(如MD5、SHA、HMAC)、对称加密(如DES、AES、PBE)、非对称加密(如RSA)以及古典加密(如恺撒加密)。文章针对每种算法阐述了其基本原理、特点、Java代码实现和典型应用场景。其中,BASE64是编码而非加密算法,MD5等哈希算法不可逆,DES因密钥短逐渐被AES替代,RSA作为非对称加密安全性高但计算量大。开发者应根据具体需求(如数据完整性校验、加密传输等)选择合适的算法。

weixin_39956506的博客 1016

java 可逆的加密算法_java实现可逆加密算法

很多加密包都提供复杂的加密算法,比如MD5,这些算法有的是不可逆的。有时候我们需要可逆算法,将敏感数据加密后放在数据库或配置文件中,在需要时再再还原。这里介绍一种非常简单的java实现可逆加密算法。算法使用一个预定义的种子(seed)来对加密内容进行异或运行,解密只用再进行一次异或运算就还原了。代码如下:seed任意写都可以。代码:package cn.exam.signup.service.pa...

weixin_36450655的博客 2695

java加密算法之对称加密算法AES

AES对称加密算法

1426

【 java中常见的加密算法】

在Java中,常见的加密算法主要分为对称加密、非对称加密和哈希算法三大类。

L-Blog 1006
上一篇: Struts2.18 Poi-3.7 Excel 导入导出 .
下一篇: C3P0连接池
msg_java2011
博客等级 码龄15年 18粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值