java加密算法

java的rsa加密算法_用java编程实现RSA加密算法 RSA加密算法是目前应用最广泛的公钥加密算法,特别适用于通过Internet传送的数据,常用于数字签名和密钥交换。那么我今天就给大家介绍一下如何利用Java编程来实现RSA加密算法。一、RSA加密算法描述RSA加密算法是1978年提出的。经过多年的分析和研究,在众多的公开密钥加密算法中,RSA加密算法最受推崇,它也被推荐为公开密钥数据加密标准。由数论知识可知,若将一个具有大素数因子的合数进行分解是... 阅读详情

简单的java加密算法有:
BASE64 严格地说,属于编码格式,而非加密算法
MD5(Message Digest algorithm 5,信息摘要算法)
SHA(Secure Hash Algorithm,安全散列算法)

1、BASE64

Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。

package com.wangyang.demo01;

import sun.misc.*;

public class TestBASE64 {
	public static void main(String[] args) {
		String str = "1234567890";
		try {
			String result1 = TestBASE64.encryptBASE64(str);
			System.out.println("result1=====加密数据==========" + result1);
			String result2 = TestBASE64.decryptBASE64(result1);
			System.out.println("str2========解密数据========" + result2);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 加密
	 * 
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static String encryptBASE64(String key) throws Exception {
		return (new BASE64Encoder().encodeBuffer(key.getBytes()));
	}
	/**
	 * 解密
	 * 
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public static String decryptBASE64(String key) throws Exception {
		byte[] b = new BASE64Decoder().decodeBuffer(key);
		return new String(b, 0, b.length);
	}
}

注意:在eclipse里面直接写的话是找不到BASE64Decoder和BASE64Encoder两个类

解决方法:
右键项目-》属性-》java bulid path-》jre System Library-》access rules-》resolution选择accessible,下面填上点击确定即可!!!

2、MD5

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文件是否一致的。

public static void main(String[] args) {
		 try {
             String inputStr = "8888888888888888888";   
             getResult(inputStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
	}
	
	 public static  String  getResult(String inputStr)
	    {
	        System.out.println("=======加密前的数据:"+inputStr);
	        BigInteger bigInteger=null;
	        try {
	         MessageDigest md = MessageDigest.getInstance("MD5");   
	         byte[] inputData = inputStr.getBytes(); 
	         md.update(inputData);   
	         bigInteger = new BigInteger(md.digest());   
	        } catch (Exception e) {e.printStackTrace();}
	        System.out.println("MD5加密后:" + bigInteger.toString(16));   
	        return bigInteger.toString(16);
	    }

注意:MD5的特点
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

3、SHA

安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。该算法经过加密专家多年来的发展和改进已日益完善,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说是对明文的一种“指纹”或是“摘要”所以对散列值的数字签名就可以视为对此明文的数字签名。

public static String getResult(String inputStr) {
        BigInteger sha = null;
        System.out.println("=======加密前的数据:" + inputStr);
        byte[] inputData = inputStr.getBytes();
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA");
            messageDigest.update(inputData);
            sha = new BigInteger(messageDigest.digest());
            System.out.println("SHA加密后:" + sha.toString(32));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sha.toString(32);
    }public static void main(String args[]) {
        try {
            String inputStr = "简单加密";
            getResult(inputStr);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
常用加密算法Java实现)总结 1、Java的安全体系架构 Java中为安全框架提供类和接口。JDK 安全 API 是 Java 编程语言的核心 API,位于 java.security 包(及其子包),以及sun.securityAPI包(及其子包)中。设计用于帮助开发人员在程序中同时使用低级和高级安全功能。 JDK 1.1 中第一次发布的 JDK 安全中引入了“Java 加密体系结构”(JCA),指的是用于访问和开发 Jav... 阅读详情

相关推荐

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万+

使用BigInteger进行大数运算

使用BigInteger进行大数运算的常见问题及处理颁发

zhangbaolin的专栏 716

QMT与聚宽策略代码对接实战:Redis信号传递与xtquant交易实现

本文详细介绍了如何将聚宽策略代码与本地QMT终端进行高效对接的实战方案。通过利用Redis Stream构建可靠信号通道,解决了云端信号到本地执行的延迟与丢失问题,并结合xtquant库实现自动化交易执行。文章重点阐述了信号封装、资金映射、异步下单、风控检查及独立资金管理等核心环节,为量化交易者搭建自主可控的实盘系统提供了完整路径。

lilh34434的博客 446

BASE64、MD5、SHA、HMAC几种加密算法(转)

本篇内容简要介绍BASE64、MD5、SHA、HMAC几种加密算法。     BASE64编码算法不算是真正的加密算法。     MD5、SHA、HMAC这三种加密算法,可谓是非可逆加密,就是不可解密的加密方法,我们称之为单向加密算法。我们通常只把他们作为加密的基础。单纯的以上三种的加密并不可靠。BASE64 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意...

zy103118的博客 1341

Java实现Base64的编码解码

没用使用java自带的各种Base64的方法以及第三方库,纯手打,若有测试异常请及时告知!java.math.BigInteger在字符串与二进制转换上是个好东西,详查API。package Base64;import java.io.UnsupportedEncodingException; import java.math.BigInteger;public class Base64_Funct

cy96151的博客 571

BigInteger和String

import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); while(in.hasNext()) ...

cymcheng6的博客 4592

base64编码-----------》struts2(token)利用BigInteger产生随机数

//struts2 源码 public static final Random RANDOM= new Random(); public static String generateGUID(){   return new BigInteger(165,RANDOM).toString(36).toUpperCase(); } 另(其他):设计成单例模式,降低...

weixin_30608503的博客 215

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

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

weixin_42509847的博客 896

java 加密算法

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

C18298182575的博客 2027

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的博客 1534

AES加密算法java实现

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

weixin_40224981的博客 1131

java中的对称加密算法

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

冯冬冬的博客 2211

java常用的五种加密算法

666

weixin_70280523的博客 923

Java加密算法分类与详解

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

weixin_39956506的博客 1001

java 加密算法的简单使用

加密算法的简单使用

qq_44818304的博客 616

基于Java的IDEA加密算法探讨

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

键者天行 6009

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

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

weixin_36450655的博客 2691

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

AES对称加密算法

1419
wangyang_1
博客等级 码龄7年 1粉丝 1原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值