java单向加密(java实现简单加密解密)

华为云服务器特价优惠火热进行中!

2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。

合作流程:
1、点击链接注册/关联华为云账号:点击跳转
2、添加客服微信号:cloud7591,确定产品方案、价格方案、服务支持方案等;
3、客服协助购买,并拉微信技术服务群,享受一对一免费技术支持服务;
技术专家在金蝶、华为、腾讯原厂有多年工作经验,并已从事云计算服务8年,可对域名、备案、网站搭建、系统部署、AI人工智能、云资源规划等上云常见问题提供更专业靠谱的服务,对相应产品提供更优惠的报价和方案,欢迎咨询。

今天给各位分享java单向加密的知识,其中也会对java实现简单加密解密进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

微信号:cloud7591
如需了解更多,欢迎添加客服微信咨询。
复制微信号

本文目录一览:

java中如何实现对文件和字符串加密. 解密?

DES 密钥生成,加解密方法,,你可以看一下

//DES 密钥生成工具

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectOutputStream;

import java.security.InvalidKeyException;

import java.security.NoSuchAlgorithmException;

import java.security.SecureRandom;

import java.security.spec.InvalidKeySpecException;

import javax.crypto.KeyGenerator;

import javax.crypto.SecretKey;

import javax.crypto.SecretKeyFactory;

import javax.crypto.spec.DESKeySpec;

public class GenKey {

private static final String DES = "DES";

public static final String SKEY_NAME = "key.des";

public static void genKey1(String path) {

// 密钥

SecretKey skey = null;

// 密钥随机数生成

SecureRandom sr = new SecureRandom();

//生成密钥文件

File file = genFile(path);

try {

// 获取密钥生成实例

KeyGenerator gen = KeyGenerator.getInstance(DES);

// 初始化密钥生成器

gen.init(sr);

// 生成密钥

skey = gen.generateKey();

// System.out.println(skey);

ObjectOutputStream oos = new ObjectOutputStream(

new FileOutputStream(file));

oos.writeObject(skey);

oos.close();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* @param file : 生成密钥的路径

* SecretKeyFactory 方式生成des密钥

* */

public static void genKey2(String path) {

// 密钥随机数生成

SecureRandom sr = new SecureRandom();

// byte[] bytes = {11,12,44,99,76,45,1,8};

byte[] bytes = sr.generateSeed(20);

// 密钥

SecretKey skey = null;

//生成密钥文件路径

File file = genFile(path);

try {

//创建deskeyspec对象

DESKeySpec desKeySpec = new DESKeySpec(bytes,9);

//实例化des密钥工厂

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);

//生成密钥对象

skey = keyFactory.generateSecret(desKeySpec);

//写出密钥对象

ObjectOutputStream oos = new ObjectOutputStream(

new FileOutputStream(file));

oos.writeObject(skey);

oos.close();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (InvalidKeySpecException e) {

e.printStackTrace();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

private static File genFile(String path) {

String temp = null;

File newFile = null;

if (path.endsWith("/") || path.endsWith("\\")) {

temp = path;

} else {

temp = path + "/";

}

File pathFile = new File(temp);

if (!pathFile.exists())

pathFile.mkdirs();

newFile = new File(temp+SKEY_NAME);

return newFile;

}

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

genKey2("E:/a/aa/");

}

}

//DES加解密方法

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.ObjectInputStream;

import javax.crypto.Cipher;

import javax.crypto.CipherInputStream;

import javax.crypto.SecretKey;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

/**

*制卡文件加/解密 加密方式DES

*/

public class SecUtil {

public static final Log log = LogFactory.getLog(SecUtil.class);

/**

* 解密

*

* @param keyPath

* 密钥路径

* @param source

* 解密前文件

* @param dest

* 解密后文件

*/

public static void decrypt(String keyPath, String source, String dest) {

SecretKey key = null;

try {

ObjectInputStream keyFile = new ObjectInputStream(

// 读取加密密钥

new FileInputStream(keyPath));

key = (SecretKey) keyFile.readObject();

keyFile.close();

} catch (FileNotFoundException ey1) {

log.info("Error when read keyFile");

throw new RuntimeException(ey1);

} catch (Exception ey2) {

log.info("error when read the keyFile");

throw new RuntimeException(ey2);

}

// 用key产生Cipher

Cipher cipher = null;

try {

// 设置算法,应该与加密时的设置一样

cipher = Cipher.getInstance("DES");

// 设置解密模式

cipher.init(Cipher.DECRYPT_MODE, key);

} catch (Exception ey3) {

log.info("Error when create the cipher");

throw new RuntimeException(ey3);

}

// 取得要解密的文件并解密

File file = new File(source);

String filename = file.getName();

try {

// 输出流,请注意文件名称的获取

BufferedOutputStream out = new BufferedOutputStream(

new FileOutputStream(dest));

// 输入流

CipherInputStream in = new CipherInputStream(

new BufferedInputStream(new FileInputStream(file)), cipher);

int thebyte = 0;

while ((thebyte = in.read()) != -1) {

out.write(thebyte);

}

in.close();

out.close();

} catch (Exception ey5) {

log.info("Error when encrypt the file");

throw new RuntimeException(ey5);

}

}

/**

* 加密

* @param keyPath 密钥路径

* @param source 加密前文件

* @param dest 加密后文件

*/

public static void encrypt(String keyPath, String source, String dest) {

SecretKey key = null;

try {

ObjectInputStream keyFile = new ObjectInputStream(

// 读取加密密钥

new FileInputStream(keyPath));

key = (SecretKey) keyFile.readObject();

keyFile.close();

} catch (FileNotFoundException ey1) {

log.info("Error when read keyFile");

throw new RuntimeException(ey1);

} catch (Exception ey2) {

log.info("error when read the keyFile");

throw new RuntimeException(ey2);

}

// 用key产生Cipher

Cipher cipher = null;

try {

// 设置算法,应该与加密时的设置一样

cipher = Cipher.getInstance("DES");

// 设置解密模式

cipher.init(Cipher.ENCRYPT_MODE, key);

} catch (Exception ey3) {

log.info("Error when create the cipher");

throw new RuntimeException(ey3);

}

// 取得要解密的文件并解密

File file = new File(source);

String filename = file.getName();

try {

// 输出流,请注意文件名称的获取

BufferedOutputStream out = new BufferedOutputStream(

new FileOutputStream(dest));

// 输入流

CipherInputStream in = new CipherInputStream(

new BufferedInputStream(new FileInputStream(file)), cipher);

int thebyte = 0;

while ((thebyte = in.read()) != -1) {

out.write(thebyte);

}

in.close();

out.close();

} catch (Exception ey5) {

log.info("Error when encrypt the file");

throw new RuntimeException(ey5);

}

}

}

java项目如何加密?

Java基本的单向加密算法:

1.BASE64 严格地说,属于编码格式,而非加密算法

2.MD5(Message Digest algorithm 5,信息摘要算法)

3.SHA(Secure Hash Algorithm,安全散列算法)

4.HMAC(Hash Message Authentication Code,散列消息鉴别码)

按 照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)

常见于邮件、http加密,截取http信息,你就会发现登录操作的用户名、密码字段通过BASE64加密的。

主要就是BASE64Encoder、BASE64Decoder两个类,我们只需要知道使用对应的方法即可。另,BASE加密后产生的字节位数是8的倍数,如果不够位数以=符号填充。

MD5

MD5 -- message-digest algorithm 5 (信息-摘要算法)缩写,广泛用于加密和解密技术,常用于文件校验。校验?不管文件多大,经过MD5后都能生成唯一的MD5值。好比现在的ISO校验,都 是MD5校验。怎么用?当然是把ISO经过MD5后产生MD5的值。一般下载linux-ISO的朋友都见过下载链接旁边放着MD5的串。就是用来验证文 件是否一致的。

HMAC

HMAC(Hash Message Authentication Code,散列消息鉴别码,基于密钥的Hash算法的认证协议。消息鉴别码实现鉴别的原理是,用公开函数和密钥产生一个固定长度的值作为认证标识,用这个 标识鉴别消息的完整性。使用一个密钥生成一个固定大小的小数据块,即MAC,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证 等。

Java MD5如何解密?

MD5是单向加密的,不管何种数据进行MD5加密都会得到固定长度的字符串,

MD5一般用户文件完整性的校验,也有用来做密码加密的。

想要破解MD5,因其本身的算法不可逆,故只能使用穷举法,也就是不断拼字符串加密和已知的MD5字符串进行比对,这是一个相当大的工程,需要庞大的数据基础。

非对称加密算法 (RSA、DSA、ECC、DH)

非对称加密需要两个密钥:公钥(publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。

非对称加密算法的保密性好,它消除了最终用户交换密钥的需要。但是加解密速度要远远慢于对称加密,在某些极端情况下,甚至能比对称加密慢上1000倍。

算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。这样安全性就大了很多。

RSA、Elgamal、背包算法、Rabin、D-H、ECC (椭圆曲线加密算法)。使用最广泛的是 RSA 算法,Elgamal 是另一种常用的非对称加密算法。

收信者是唯一能够解开加密信息的人,因此收信者手里的必须是私钥。发信者手里的是公钥,其它人知道公钥没有关系,因为其它人发来的信息对收信者没有意义。

客户端需要将认证标识传送给服务器,此认证标识 (可能是一个随机数) 其它客户端可以知道,因此需要用私钥加密,客户端保存的是私钥。服务器端保存的是公钥,其它服务器知道公钥没有关系,因为客户端不需要登录其它服务器。

数字签名是为了表明信息没有受到伪造,确实是信息拥有者发出来的,附在信息原文的后面。就像手写的签名一样,具有不可抵赖性和简洁性。

简洁性:对信息原文做哈希运算,得到消息摘要,信息越短加密的耗时越少。

不可抵赖性:信息拥有者要保证签名的唯一性,必须是唯一能够加密消息摘要的人,因此必须用私钥加密 (就像字迹他人无法学会一样),得到签名。如果用公钥,那每个人都可以伪造签名了。

问题起源:对1和3,发信者怎么知道从网上获取的公钥就是真的?没有遭受中间人攻击?

这样就需要第三方机构来保证公钥的合法性,这个第三方机构就是 CA (Certificate Authority),证书中心。

CA 用自己的私钥对信息原文所有者发布的公钥和相关信息进行加密,得出的内容就是数字证书。

信息原文的所有者以后发布信息时,除了带上自己的签名,还带上数字证书,就可以保证信息不被篡改了。信息的接收者先用 CA给的公钥解出信息所有者的公钥,这样可以保证信息所有者的公钥是真正的公钥,然后就能通过该公钥证明数字签名是否真实了。

RSA 是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有,供解密之用。

A 要把信息发给 B 为例,确定角色:A 为加密者,B 为解密者。首先由 B 随机确定一个 KEY,称之为私钥,将这个 KEY 始终保存在机器 B 中而不发出来;然后,由这个 KEY 计算出另一个 KEY,称之为公钥。这个公钥的特性是几乎不可能通过它自身计算出生成它的私钥。接下来通过网络把这个公钥传给 A,A 收到公钥后,利用公钥对信息加密,并把密文通过网络发送到 B,最后 B 利用已知的私钥,就能对密文进行解码了。以上就是 RSA 算法的工作流程。

由于进行的都是大数计算,使得 RSA 最快的情况也比 DES 慢上好几倍,无论是软件还是硬件实现。速度一直是 RSA 的缺陷。一般来说只用于少量数据加密。RSA 的速度是对应同样安全级别的对称密码算法的1/1000左右。

比起 DES 和其它对称算法来说,RSA 要慢得多。实际上一般使用一种对称算法来加密信息,然后用 RSA 来加密比较短的公钥,然后将用 RSA 加密的公钥和用对称算法加密的消息发送给接收方。

这样一来对随机数的要求就更高了,尤其对产生对称密码的要求非常高,否则的话可以越过 RSA 来直接攻击对称密码。

和其它加密过程一样,对 RSA 来说分配公钥的过程是非常重要的。分配公钥的过程必须能够抵挡中间人攻击。假设 A 交给 B 一个公钥,并使 B 相信这是A 的公钥,并且 C 可以截下 A 和 B 之间的信息传递,那么 C 可以将自己的公钥传给 B,B 以为这是 A 的公钥。C 可以将所有 B 传递给 A 的消息截下来,将这个消息用自己的密钥解密,读这个消息,然后将这个消息再用 A 的公钥加密后传给 A。理论上 A 和 B 都不会发现 C 在偷听它们的消息,今天人们一般用数字认证来防止这样的攻击。

(1) 针对 RSA 最流行的攻击一般是基于大数因数分解。1999年,RSA-155 (512 bits) 被成功分解,花了五个月时间(约8000 MIPS 年)和224 CPU hours 在一台有3.2G 中央内存的 Cray C916计算机上完成。

RSA-158 表示如下:

2009年12月12日,编号为 RSA-768 (768 bits, 232 digits) 数也被成功分解。这一事件威胁了现通行的1024-bit 密钥的安全性,普遍认为用户应尽快升级到2048-bit 或以上。

RSA-768表示如下:

(2) 秀尔算法

量子计算里的秀尔算法能使穷举的效率大大的提高。由于 RSA 算法是基于大数分解 (无法抵抗穷举攻击),因此在未来量子计算能对 RSA 算法构成较大的威胁。一个拥有 N 量子位的量子计算机,每次可进行2^N 次运算,理论上讲,密钥为1024位长的 RSA 算法,用一台512量子比特位的量子计算机在1秒内即可破解。

DSA (Digital Signature Algorithm) 是 Schnorr 和 ElGamal 签名算法的变种,被美国 NIST 作为 DSS (DigitalSignature Standard)。 DSA 是基于整数有限域离散对数难题的。

简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名,如果数据和签名不匹配则认为验证失败。数字签名的作用就是校验数据在传输过程中不被修改,数字签名,是单向加密的升级。

椭圆加密算法(ECC)是一种公钥加密算法,最初由 Koblitz 和 Miller 两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成 Abel 加法群上椭圆离散对数的计算困难性。公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。

ECC 的主要优势是在某些情况下它比其他的方法使用更小的密钥 (比如 RSA),提供相当的或更高等级的安全。ECC 的另一个优势是可以定义群之间的双线性映射,基于 Weil 对或是 Tate 对;双线性映射已经在密码学中发现了大量的应用,例如基于身份的加密。不过一个缺点是加密和解密操作的实现比其他机制花费的时间长。

ECC 被广泛认为是在给定密钥长度的情况下,最强大的非对称算法,因此在对带宽要求十分紧的连接中会十分有用。

比特币钱包公钥的生成使用了椭圆曲线算法,通过椭圆曲线乘法可以从私钥计算得到公钥, 这是不可逆转的过程。

Java 中 Chipher、Signature、KeyPairGenerator、KeyAgreement、SecretKey 均不支持 ECC 算法。

DH,全称为"Diffie-Hellman",它是一种确保共享 KEY 安全穿越不安全网络的方法,也就是常说的密钥一致协议。由公开密钥密码体制的奠基人 Diffie 和 Hellman 所提出的一种思想。简单的说就是允许两名用户在公开媒体上交换信息以生成"一致"的、可以共享的密钥。也就是由甲方产出一对密钥 (公钥、私钥),乙方依照甲方公钥产生乙方密钥对 (公钥、私钥)。

以此为基线,作为数据传输保密基础,同时双方使用同一种对称加密算法构建本地密钥 (SecretKey) 对数据加密。这样,在互通了本地密钥 (SecretKey) 算法后,甲乙双方公开自己的公钥,使用对方的公钥和刚才产生的私钥加密数据,同时可以使用对方的公钥和自己的私钥对数据解密。不单单是甲乙双方两方,可以扩展为多方共享数据通讯,这样就完成了网络交互数据的安全通讯。

具体例子可以移步到这篇文章: 非对称密码之DH密钥交换算法

参考:

太空行动怎么保存二维码

太空行动怎么保存二维码:

天舟二号与天和核心舱对接,这次天舟二号运送的货物重量近7吨!货物舱共有208个货格!总重13.5吨的天舟二号搭载的货物达到6.9吨,载货比0.51,是目前世界上载货能力最强的货运飞船。

货运飞船也有“二维码智能货柜”

以往,由于货物的种类和数量特别庞大,航天员经常会遇到找不到东西的情况。在天舟二号的货物清单里,既包含航天员维持生存所需的物品,也涵盖做实验的一些硬件设备,大大小小的“包裹”该怎么找?

为防止航天员找不到东西,工作人员为天舟二号专门研发了智能货物管理系统。所有物品都有明显标签,还配有二维码,航天员用手机扫码就能清晰了解货物情况。同时,这些数据还会同步到地面,地面工作人员同样能了解空间站货物情况。

兵马未动,粮草先行。天舟二号货运飞船担负着向空间站输送物资和补加燃料的重任。这次携带的物资有航天员生活物资、舱外航天服及空间站平台设备、应用载荷和推进剂等,将为后续航天员进驻空间站提前做好保障准备。

天舟二号货运飞船专门研发了智能货物管理系统来解决这个问题。每个储物柜都会放置不同的生活物品或实验设备。所有物品都有明显标签,还配有二维码,航天员用手机扫码就能清晰了解货物情况。

空间站里的货物还有多少、放在哪里,这些数据可以同步传输到地面。通过智能货物管理系统,可以让航天员和地面工作人员清晰地了解空间站货物情况,保证空间站货物的高效管理。

那么如何通过二维码来展示物品信息呢?

其实很简单,可以通过将物品信息(图文内容)以PDF的格式转换成一个二维码,扫描二维码即可查看这个内容。

如何将PDF文档转换成二维码呢?

第一步,登录二维彩虹二维码生成器官方网站

第二步,选择“文件”选项

然后上传本地的PDF文档。支持的文档类型有PDF、JPEG、PNG、MP3、MP4、Excel 等格式。

第三步,生成动态二维码

动态二维码比静态二维码更具有优势。能够在二维码生成之后,还能随时在后台更改二维码的内容,且每次扫描原来的二维码图片,都能看到最新更新的内容。而且,这个动态二维码还能追踪二维码的扫描数据,比如扫描时间、次数、位置等。

第四步,美化二维码

如果是要给物品做标记的话,那么可以在二维码上上传物品图片,还可以在边框做简短文字标记。还能更改二维码的颜色,让其更加便于确认。

第五步,确认美化完毕,且测试扫描无误之后,可以直接下载使用了。

其实这样用来标记的二维码,还可以被用在家庭收纳、办公文件归档、图书归档、物流管理等方方面面。一方面提升了管理效率,方便记忆,节省查找的时间,也大大提升了人们的体验。当然了,PDF二维码也能被用来制作产品使用说明书、作品集等。

而且如果箱子内部的东西有变化,不管是增加还是减少,都可以直接在后台对二维码进行编辑即可。

原文阅读:

二维码登上太空飞船啦

相关阅读:

多个文件生成一个二维码怎么做?

文章知识点与官方知识档案匹配

小程序技能树首页概览

3947 人正在系统学习中

打开CSDN APP,看更多技术内容

白宫发布太空系统网络安全防护指令_奇安信代码卫士的博客

甚至破坏卫星。”官方指出,“对太空行动有害的恶意网络活动包括欺骗传感器数据、损坏传感器系统、堵塞或发送越权命令实施控制、注入恶意代码以及执行拒绝服务攻击。”

继续访问

军事大脑的构建对未来战争的影响_人工智能学家的博客

形成军事超级 智能的左右大脑架构, 一方面是军人、军事机构、支撑机构链接起来形成军事大脑的右 大脑-军事云群体智能, 另一方面是军事传感器、军事视频监控、军事机器人、战机, 导弹、 战舰、卫星、太空武器链接起来形成军事大脑的左大脑-军...

继续访问

未来,中国空间站将成为怎样的“太空科研站”?

来源:中国科学报作者:赵维杰,NSR新闻编辑9月17日13点34分,神舟十二号载人飞船返回舱在东风着陆场顺利着陆。航天员聂海胜、刘伯明、汤洪波状态良好,我国空间站阶段首次载人飞行任务取得圆...

继续访问

一项千年太空任务即将拯救人类——科学家们正在密谋中

全文共6815字,预计学习时长20分钟来源:Pexels“2075年,太阳即将毁灭,地球已经不适合人类生存了。面对绝境,人类开启“流浪地球”计划,试图带着地球一起逃离太阳系,寻找人类新的...

继续访问

机器人工作原理的超详细解析,生动、形象!_人工智能学家的博客

例如,操作人员可能会指示机器人到达某个特定的地点,但不会为它指引路线,而是任由它找到自己的路。 NASA研发可远程控制的太空机器人R2 自动机器人可以自主行动,无需依赖于任何控制人员。其基本原理是对机器人进行编程,使之能以某种方式对...

继续访问

什么是元宇宙?如果你想参与进Metaverse中去,应该采用什么策略?_智能推荐...

我并不是假设它们存在,而是通过科学实验,并以非常严格的方式找出是否有任何无线电信号从外太空传给我们。因为如果另外一个文明确实存在,那么不可避免地会使用无线电作为远距离通信成本最低的方式。因此,我们通过使用世界上最大的射电...

继续访问

美国新登月计划有何不一样

来源:新华社新华社华盛顿8月10日电(记者周舟)在人类登月50年后,美国航天局开始紧锣密鼓地研制新一代重型火箭和“猎户座”飞船,计划2024年前再次将宇航员送上月球。为何...

继续访问

那一年,马斯克和我聊了聊他的「太空梦」

【编者按】北京时间 5 月 31 日 3 时 22 分,在全球网友的云注视下,矗立在发射塔多日的 SpaceX 猎鹰九号运载火箭,终于不负众望,成功升空,载有两名宇航员的龙飞船顺利进入预定轨道。这是人类历史上首个商业载人航天飞船,它揭开了人类商业航天的序幕。对 Elon Musk(马斯克)来说,他那听起来无比疯狂的移民火星计划,又跨出了坚实的一步。过去 6 年,我和 Musk 有幸有过一些交流,2...

继续访问

5G/6G:构建一个更加互联智能的世界_人工智能学家的博客

太空卫星将使偏远地区居民的生活质量得到显著改善,就像其他地方的高连通性一样。” 预计到2023年,太空卫星的数量将大幅增加,并推动解决将手机连接到太空卫星所带来的一些棘手问题。 “ 6G的崛起...

继续访问

...用的MD5加密(可直接运行) _tidus2005的博客_太空行动...

1、md5加密,该加密算法是单向加密,即加密的数据不能再通过解密还原。相关类包含在java.security.MessageDigest包中。 2、3-DES加密,该加密算法是可逆的,解密方可以通过与加密方约定的密钥匙进行解密。相关类包含在javax.crypto.*包中。

继续访问

50 年人类登月史:那些不为人知的故事

来源:CSDN2019年7月20日是纪念人类登月五十周年的好日子。人类于1969年首次正式登上月球,历史将永远铭记两位宇航员的名字:尼尔·阿姆斯特朗与巴兹·奥尔德林。...

继续访问

登月源码登顶 GitHub Top1,37000 Star 致敬人类登月 50 周年!

作者 | 伍杏玲出品 | CSDN(ID:CSDNnews)1969 年 7 月 20 日,“阿波罗 11 号”飞船登月,宇航员尼尔·阿姆斯特朗(Neil Armstro...

继续访问

宇宙(Universe)_GuoBook的博客_cosmos与universe的区别

在中世纪,人们把沿着同一方向朝同一目标共同行动的一群人称为universitas。在最广泛的意义上,universitas 又指一切现成的东西所构成的统一整体,那就是universe,即宇宙。universe和cosmos常常表示相同的意义,所不同的是,前者强调的是物质现象...

继续访问

《Stellaris》游戏分析报告_技术宅也爱玩游戏的博客_stellaris

Stellaris (中文译名:群星)是由瑞典知名策略游戏开发商 Paradox Interactive (以下简称为 P社)推出的太空题材单机/联机大战略游戏,游戏以探索宇宙、扩张与发展帝国以及与其他文明 的外交和战争为主线展开,于2016年正式登陆Steam平台。

继续访问

预计2024年之前载人登月!NASA授予马斯克贝索斯公司大单

来源:小小据外媒报道,当地时间周四,美国宇航局(NASA)宣布选中埃隆·马斯克(Elon Musk)旗下美国太空探索技术公司SpaceX、杰夫·贝索斯(Jeff Bezos)的蓝色起源公...

继续访问

明明可以靠颜值,却用代码把人类送上了月球的女人—Margaret Hamilton

现在提到开发人员,大家一定就会觉得是男性。但是你不知道的是,有些程序媛却靠她们自己的能力,缔造了编程传奇,今天我们就来介绍这位集美貌与智慧于一身的程序媛——玛格丽特·汉密尔顿。据说「软件工程师」这个名词就是她发明的玛格丽特站在阿波罗计算机指导手册 (AGC) 的源代码程序列表旁边,这些材料摞起来比她的人还要高。图片来源:Margaret Hamilton缔造传奇的人似乎有个共性:本来没想干一票大的

继续访问

智能浪潮:增强时代来临_蔚1的博客

之前,这种国家层面的大规模努力仅限于战争行动,但是在冷战期间,虽然军备竞赛全面铺开,但是占领地球轨道所在的太空区域的能力在这两个竞争国的思想中就像根据地一样至关紧要。 原子时代是经济大发展的时代。GDP 增长率在20世纪五六十年代...

继续访问

刚刚,马斯克再次创造航天历史!SpaceX首次载人发射任务成功

乾明 金磊 白交 发自 凹非寺量子位 报道 | 公众号 QbitAI同样的美国佛罗里达,同样的肯尼迪航天中心,重新踏上星辰大海的征途,不同的名字:道格·赫利、鲍勃·贝肯——两位宇航员,...

继续访问

里程碑!SpaceX 载人首飞发射成功,马斯克填补美国载人飞行近十年空白

来源:雷锋网作者 | 付静1 代表着首次,标志着政府与企业持续合作前往国际空间站的开始。终于,美国太空探索技术公司(SpaceX)的首次正式载人飞行任务拉开大幕!美东时间 2020 年 ...

继续访问

最新发布 人类月球日 | 专访邹海洋:中国的航天梦,是信任与不辜负的故事

今天是人类月球日,逐梦九天,中国探索永不止步!2021年,在神舟十二号飞船航天员“太空出差”期间,邹海洋手写了上万遍的“凯旋归来”“太空导游”和“天外吃播”,“画”出了聂海胜、刘伯明和汤洪波的头像。除此之外,他还用“无名英雄”“画”了中国载人航天空城航天员系统总设计师黄伟芬的肖像。作品意外获得了包括北京新闻、央视在内的多家媒体报道。左:黄伟芬;右:邹海洋,来源邹海洋提...

继续访问

每周分享第 58 期

这里记录过去一周,我看到的值得分享的东西,每周五发布。 ...

继续访问

科技爱好者周刊:第 103 期

这里记录每周值得分享的科技内容,周五发布。 ...

继续访问

你以为美国商业航天那么牛只是因为马斯克?更多原因在这里!

来源:银河航天漫游指南2020年5月31日,SpaceX的载人龙飞船成功将两位宇航员成功送往国际空间站,成为有史以来第一家将人类送入太空轨道的私营企业。美国商业航天领域的进展有目共睹。载...

继续访问

用Starlink填补5G和光纤之间的空白

今天,世界上大约一半的人口 (大约37亿人) 没有互联网。正如在最近新冠病毒大流行期间,互联互通可以对全球人民的生活产生变革性的影响。为此,SpaceX利用其制造火箭和航天器的经验推出了“...

继续访问

今日芯声 | 从“罪犯”到“英镑人物”,图灵比肩英国女王

“今日芯声”是读芯术推出的一档简读栏目,汇聚每日国内外最新最热的AI应用资讯,敬请关注。1、“人工智能之父”艾伦·图灵登上英国50英镑新钞海外网7月15日电英国广播公司(...

继续访问

未来50亿年科学预测

来源:宇宙解码近期未来史现今——公元2500年公元2020年三维全息电视将进入生活,人们可以通过付费点播观看。公元2025年氢燃料电池技术将给交通运输领域带来革命,氢...

继续访问

宇宙其实很小:总有一天人们能把宇宙装进口袋里

全文共3199字,预计学习时长8分钟图源:unsplash浩瀚宇宙,无垠苍穹,在我们的认知里,宇宙大得不可思议。就拿下面这张照片来说吧,这是哈勃超深空图像,乍一看就像一堆恒星,但其实远...

继续访问

MIT重新发明飞机:无需燃料,每秒万米喷射带你上天 | Nature封面

来源:量子位这不是科幻小说,离子引擎飞机真的被造出来了!“曲率引擎”、“离子引擎”等等激动人心的科幻名词,正在走进现实。最近MIT又重新发明了飞机,实验成果登上了《自然》...

继续访问

太空行动账号二维码

数据库

编辑器

写评论

评论

收藏

点赞

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(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)

DH(Diffie-Hellman算法,密钥一致协议)

DSA(Digital Signature Algorithm,数字签名)

ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)

代码参考:

/**

* 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 {

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 {

KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);

SecretKey secretKey = keyGenerator.generateKey();

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);

}

关于java单向加密和java实现简单加密解密的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

发布于 2023-04-05 19:04:57
收藏
分享
海报
41
目录

    忘记密码?

    图形验证码

    复制成功
    微信号: cloud7591
    如需了解更多,欢迎添加客服微信咨询。
    我知道了