加密算法

可逆与不可逆算法,对称加密与非对称加密算法总结 文章目录1. 加密算法的种类2. 不可逆加密算法①:MD5②:HMAC系列③:SHA系列3. 可逆加密算法1. 对称加密①:DES②:3DES③:AES2. 非对称加密①:RSA4. Base64编码5. BCrypt 1. 加密算法的种类 加密算法分为可逆、不可逆加密算法。而不可逆加密算法又分为对称加密和非对称加密 不可逆加密:不可逆加密算法最大的特点就是不需要密钥,但是HMAC是需要密钥的! 常见的不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA- 阅读详情

加密算法我们整体可以分为:可逆加密和不可逆加密,可逆加密又可以分为:对称加密和非对称加密。
一、不可逆加密

常见的不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我们可以统称为SHA2加密算法,SHA加密算法的安全性要比MD5更高,而SHA2加密算法比SHA1的要高。其中SHA后面的数字表示的是加密后的字符串长度,SHA1默认会产生一个160位的信息摘要。

不可逆加密算法最大的特点就是密钥,但是HMAC是需要密钥的【手动狗头】。

由于这些加密都是不可逆的,因此比较常用的场景就是用户密码加密,其验证过程就是通过比较两个加密后的字符串是否一样来确认身份的。网上也有很多自称是可以破解MD5密码的网站,其原理也是一样,就是有一个巨大的资源库,存放了许多字符串及对应的MD5加密后的字符串,通过你输入的MD5加密串来进行比较,如果过你的密码复杂度比较低,还是有很大机率验证出来的。

1.1MD5
MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
MD5算法有以下特点:

1、压缩性:无论数据长度是多少,计算出来的MD5值长度相同

2、容易计算性:由原数据容易计算出MD5值

3、抗修改性:即便修改一个字节,计算出来的MD5值也会巨大差异

4、抗碰撞性:知道数据和MD5值,很小概率找到相同MD5值相同的原数据

public static String md5(String text) {
 2    MessageDigest messageDigest = null;
 3    try {
 4        messageDigest = MessageDigest.getInstance("MD5");
 5    } catch (NoSuchAlgorithmException e) {
 6        e.printStackTrace();
 7    }
 8    byte[] bytes = messageDigest.digest(text.getBytes());
 9    return Hex.encodeHexString(bytes); 
10}

1.2 SHA系列
安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。
2005年8月17日的CRYPTO会议尾声中王小云、姚期智、姚储枫再度发表更有效率的SHA-1攻击法,能在2的63次方个计算复杂度内找到碰撞。也就是说SHA-1加密算法有碰撞的可能性,虽然很小。

public static String sha256(String text) {
 2    MessageDigest messageDigest = null;
 3    try {
 4        messageDigest = MessageDigest.getInstance("SHA-256");
 5    } catch (NoSuchAlgorithmException e) {
 6        e.printStackTrace();
 7    }
 8    byte[] bytes = messageDigest.digest(text.getBytes()); 
 9    return Hex.encodeHexString(bytes); 
10}

1.3 HMAC系列
HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code)的缩写,由H.Krawezyk,M.Bellare,R.Canetti于1996年提出的一种基于Hash函数和密钥进行消息认证的方法,并于1997年作为RFC2104被公布,并在IPSec和其他网络协议(如SSL)中得以广泛应用,现在已经成为事实上的Internet安全标准。它可以与任何迭代散列函数捆绑使用。
HMAC算法更像是一种加密算法,它引入了密钥,其安全性已经不完全依赖于所使用的Hash算法

public static String hmacSha256(String text, SecretKeySpec sk) {
 2    Mac mac = null;
 3    try {
 4        mac = Mac.getInstance("HmacSHA256");
 5    } catch (NoSuchAlgorithmException e) {
 6        e.printStackTrace();
 7    }
 8    try {
 9        mac.init(sk);
10    } catch (InvalidKeyException e) {
11        e.printStackTrace();
12    }
13    byte[] rawHmac = mac.doFinal(text.getBytes());
14    return new String(Base64.encodeBase64(rawHmac));
15}

如果要使用不可逆加密,推荐使用SHA256、SHA384、SHA512以及HMAC-SHA256、HMAC-SHA384、HMAC-SHA512这几种算法。

二、对称加密算法
对称加密算法是应用比较早的算法,在数据加密和解密的时用的都是同一个密钥,这就造成了密钥管理困难的问题。常见的对称加密算法有DES、3DES、AES128、AES192、AES256(默认安装的JDK尚不支持AES256,需要安装对应的jce补丁进行升级jce1.7,jce1.8)。其中AES后面的数字代表的是密钥长度。对称加密算法的安全性相对较低,比较适用的场景就是内网环境中的加解密。

2.1 DES
DES是对称加密算法领域中的典型算法,其密钥默认长度为56位。

// 加密
 2public static String encrypt(byte[] dataSource, String password){
 3     try {
 4         SecureRandom random = new SecureRandom();
 5         DESKeySpec desKeySpec = new DESKeySpec(password.getBytes());
 6         //创建一个密匙工厂,然后用它把DESKeySpec转换成 
 7         SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("DES"); 
 8         SecretKey secretKey = secretKeyFactory.generateSecret(desKeySpec); 
 9         //Cipher对象实际完成加密操作 
10         Cipher cipher = Cipher.getInstance("DES"); 
11         //用密匙初始化Cipher对象 
12         cipher.init(Cipher.ENCRYPT_MODE, secretKey, random); 
13         //正式执行加密操作 
14         return Base64.encodeBase64String(cipher.doFinal(dataSource)); 
15     } catch (Throwable e) { 
16         e.printStackTrace(); 
17     } return null; 
18 } 
19// 解密
20public static String decrypt(String src, String password) throws Exception{ 
21    // DES算法要求有一个可信任的随机数源 
22    SecureRandom random = new SecureRandom(); 
23    // 创建一个DESKeySpec对象 
24    DESKeySpec desKeySpec = new DESKeySpec(password.getBytes()); 
25    // 创建一个密匙工厂 
26    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); 
27    // 将DESKeySpec对象转换成SecretKey对象 
28    SecretKey secretKey = keyFactory.generateSecret(desKeySpec); 
29    // Cipher对象实际完成解密操作 
30    Cipher cipher = Cipher.getInstance("DES"); 
31    // 用密匙初始化Cipher对象 
32    cipher.init(Cipher.DECRYPT_MODE, secretKey, random); 
33    // 真正开始解密操作 
34    return new String(cipher.doFinal(Base64.decodeBase64(src))); 
35}

2.2 3DES
3DES(即Triple DES)是DES向AES过渡的加密算法,它使用3条56位的密钥对数据进行三次加密。是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法。比起最初的DES,3DES更为安全。密钥长度默认为168位,还可以选择128位。

public static String encryptThreeDESECB(String src, String key) {
 2    try{
 3        DESedeKeySpec dks = new DESedeKeySpec(key.getBytes("UTF-8"));
 4        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
 5        SecretKey securekey = keyFactory.generateSecret(dks);
 6
 7        Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
 8        cipher.init(Cipher.ENCRYPT_MODE, securekey);
 9        byte[] b = cipher.doFinal(src.getBytes("UTF-8"));
10
11        String ss = new String(Base64.encodeBase64(b));
12        ss = ss.replaceAll("\\+", "-");
13        ss = ss.replaceAll("/", "_");
14        return ss;
15    } catch(Exception ex){
16        ex.printStackTrace();
17        return src;
18    }
19}
20
21public static String decryptThreeDESECB(String src, String key) {
22    try{
23        src = src.replaceAll("-", "+");
24        src = src.replaceAll("_", "/");
25        byte[] bytesrc = Base64.decodeBase64(src.getBytes("UTF-8"));
26        // --解密的key
27        DESedeKeySpec dks = new DESedeKeySpec(key.getBytes("UTF-8"));
28        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
29        SecretKey securekey = keyFactory.generateSecret(dks);
30
31        // --Chipher对象解密
32        Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
33        cipher.init(Cipher.DECRYPT_MODE, securekey);
34        byte[] retByte = cipher.doFinal(bytesrc);
35
36        return new String(retByte, "UTF-8");
37    } catch(Exception ex){
38        ex.printStackTrace();
39        return src;
40    }
41}

2.3 AES
AES高级数据加密标准,能够有效抵御已知的针对DES算法的所有攻击,默认密钥长度为128位,还可以供选择192位,256位。这里顺便提一句这个位指的是bit。

private static final String defaultCharset = "UTF-8";
 2private static final String KEY_AES = "AES";
 3private static final String KEY_MD5 = "MD5";
 4private static MessageDigest md5Digest;
 5static {
 6    try {
 7        md5Digest = MessageDigest.getInstance(KEY_MD5);
 8    } catch (NoSuchAlgorithmException e) {
 9
10    }
11}
12/**
13  * 加密
14  */
15public static String encrypt(String data, String key) {
16    return doAES(data, key, Cipher.ENCRYPT_MODE);
17}
18/**
19  * 解密
20  */
21public static String decrypt(String data, String key) {
22    return doAES(data, key, Cipher.DECRYPT_MODE);
23}
24
25
26/**
27  * 加解密
28  */
29private static String doAES(String data, String key, int mode) {
30    try {
31        boolean encrypt = mode == Cipher.ENCRYPT_MODE;
32        byte[] content;
33        if (encrypt) {
34            content = data.getBytes(defaultCharset);
35        } else {
36            content = Base64.decodeBase64(data.getBytes());
37        }
38        SecretKeySpec keySpec = new SecretKeySpec(md5Digest.digest(key.getBytes(defaultCharset))
39                                                  , KEY_AES);
40        Cipher cipher = Cipher.getInstance(KEY_AES);// 创建密码器
41        cipher.init(mode, keySpec);// 初始化
42        byte[] result = cipher.doFinal(content);
43        if (encrypt) {
44            return new String(Base64.encodeBase64(result));
45        } else {
46            return new String(result, defaultCharset);
47        }
48    } catch (Exception e) {
49    }
50    return null;
51}

推荐使用对称加密算法有:AES128、AES192、AES256。

三、非对称加密算法
非对称加密算法有两个密钥,这两个密钥完全不同但又完全匹配。只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密过程。常见的非对称加密有RSA、SM2等。
RSA密钥至少为500位长,一般推荐使用1024位。

//非对称密钥算法

 2public static final String KEY_ALGORITHM = "RSA";
  3
  4/**
  5  * 密钥长度,DH算法的默认密钥长度是1024
  6  * 密钥长度必须是64的倍数,在512到65536位之间
  7  */
  8private static final int KEY_SIZE = 1024;
  9//公钥
 10private static final String PUBLIC_KEY = "RSAPublicKey";
 11//私钥
 12private static final String PRIVATE_KEY = "RSAPrivateKey";
 13/**
 14  * 初始化密钥对
 15  *
 16  * @return Map 甲方密钥的Map
 17  */
 18public static Map<String, Object> initKey() throws Exception {
 19    //实例化密钥生成器
 20    KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KEY_ALGORITHM);
 21    //初始化密钥生成器
 22    keyPairGenerator.initialize(KEY_SIZE);
 23    //生成密钥对
 24    KeyPair keyPair = keyPairGenerator.generateKeyPair();
 25    //甲方公钥
 26    RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
 27    //甲方私钥
 28    RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
 29    //将密钥存储在map中
 30    Map<String, Object> keyMap = new HashMap<String, Object>();
 31    keyMap.put(PUBLIC_KEY, publicKey);
 32    keyMap.put(PRIVATE_KEY, privateKey);
 33    return keyMap;
 34}
 35/**
 36  * 私钥加密
 37  *
 38  * @param data 待加密数据
 39  * @param key  密钥
 40  * @return byte[] 加密数据
 41  */
 42public static byte[] encryptByPrivateKey(byte[] data, byte[] key) throws Exception {
 43
 44    //取得私钥
 45    PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key);
 46    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
 47    //生成私钥
 48    PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec);
 49    //数据加密
 50    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
 51    cipher.init(Cipher.ENCRYPT_MODE, privateKey);
 52    return cipher.doFinal(data);
 53}
 54
 55/**
 56  * 公钥加密
 57  *
 58  * @param data 待加密数据
 59  * @param key  密钥
 60  * @return byte[] 加密数据
 61  */
 62public static byte[] encryptByPublicKey(byte[] data, byte[] key) throws Exception {
 63
 64    //实例化密钥工厂
 65    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
 66    //初始化公钥
 67    //密钥材料转换
 68    X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key);
 69    //产生公钥
 70    PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);
 71    //数据加密
 72    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
 73    cipher.init(Cipher.ENCRYPT_MODE, pubKey);
 74    return cipher.doFinal(data);
 75}
 76
 77/**
 78  * 私钥解密
 79  *
 80  * @param data 待解密数据
 81  * @param key  密钥
 82  * @return byte[] 解密数据
 83  */
 84public static byte[] decryptByPrivateKey(byte[] data, byte[] key) throws Exception {
 85    //取得私钥
 86    PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key);
 87    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
 88    //生成私钥
 89    PrivateKey privateKey = keyFactory.generatePrivate(pkcs8KeySpec);
 90    //数据解密
 91    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
 92    cipher.init(Cipher.DECRYPT_MODE, privateKey);
 93    return cipher.doFinal(data);
 94}
 95
 96/**
 97  * 公钥解密
 98  *
 99  * @param data 待解密数据
100  * @param key  密钥
101  * @return byte[] 解密数据
102  */
103public static byte[] decryptByPublicKey(byte[] data, byte[] key) throws Exception {
104
105    //实例化密钥工厂
106    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
107    //初始化公钥
108    //密钥材料转换
109    X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(key);
110    //产生公钥
111    PublicKey pubKey = keyFactory.generatePublic(x509KeySpec);
112    //数据解密
113    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
114    cipher.init(Cipher.DECRYPT_MODE, pubKey);
115    return cipher.doFinal(data);
116}
117
118/**
119  * 取得私钥
120  *
121  * @param keyMap 密钥map
122  * @return byte[] 私钥
123  */
124public static byte[] getPrivateKey(Map<String, Object> keyMap) {
125    Key key = (Key) keyMap.get(PRIVATE_KEY);
126    return key.getEncoded();
127}
128
129/**
130  * 取得公钥
131  *
132  * @param keyMap 密钥map
133  * @return byte[] 公钥
134  */
135public static byte[] getPublicKey(Map<String, Object> keyMap) throws Exception {
136    Key key = (Key) keyMap.get(PUBLIC_KEY);
137    return key.getEncoded();
138}

四、加密盐

加密盐也是比较常听到的一个概念,盐就是一个随机字符串用来和我们的加密串拼接后进行加密。加盐主要是为了提供加密字符串的安全性。假如有一个加盐后的加密串,黑客通过一定手段这个加密串,他拿到的明文,并不是我们加密前的字符串,而是加密前的字符串和盐组合的字符串,这样相对来说又增加了字符串的安全性。

文中的一些算法来源于网络,可直接复制使用。

比较推荐的几个加密算法有:

不可逆加密:SHA256、SHA384、SHA512以及HMAC-SHA256、HMAC-SHA384、HMAC-SHA512
对称加密算法:AES、3DES
非对称加密算法:RSA

加密算法及应用总结 加密算法 使用密码学可以达到以下目的: 保密性:防止用户的标识或数据被读取。 数据完整性:防止数据被更改。 身份验证:确保数据发自特定的一方。 在加密中,应该保密的仅仅是明文和密钥。也就是说我们通常假设攻击者对加密算法和密文了如指掌,因此加密的安全性应该仅仅依赖于密钥而不是依赖于假设攻击者不知道加密算法。 在如今的信息安全领域,有各种各样的加密算法凝聚了计算机科学家门的智慧。从宏观上来看,这些加密算法可以归结为三大类:哈希算法、对称加密算法、非对称加密算法。 1. 哈希算法 哈希算法:又称散列算法,是一 阅读详情

相关推荐

RSA加密算法和签名算法

RSA加密算法和签名算法 一、理论_来源于网上。 RSA加密算法 RSA公钥加密体制包含如下3个算法:KeyGen(密钥生成算法),Encrypt(加密算法)以及Decrypt(解密算法)。 。密钥生成算法以安全常数作为输入,输出一个公钥PK,和一个私钥SK。安全常数用于确定这个加密算法的安全性有多高,一般以加密算法使用的质数p的大小有关。越大,质数p一般越大,保证体制有更高的安全性。在R...

shuixiou1的博客 5351

加密算法(对称/非对称,可逆/不可逆)

加密算法(对称/非对称,可逆/不可逆)

WUTAZZZ的博客 1550

15、查看nginx https当前支持的加密算法以及使用的加密算法

Nginx 支持的加密算法由其所使用的 OpenSSL 库决定,可通过命令查看支持列表,而当前使用的加密算法可从配置文件或运行时变量获取。nginx -Vnginx.conflog_formatnmap -sV --version-light -p 30080,30443 192.168.0.119查看版本信息-sV-p 443127.0.0.1。

xuebo1129927648的博客 1029

以太坊加密原理(内容为链接的内容目录)

内容源自https://www.jianshu.com/p/abfc4f442325 以太坊加密原理总结: 一、非对称加密基础知识 (一)非对称加密解决的问题 (二)非对称加密过程演示与相关问题 1、公钥加密演示 2、私钥加密公钥解密演示 3、双重加密演示–先公钥加密,后私钥签名 4、双重加密演示–先私钥签名,后公钥加密 (三)、消息认证 (四)、消息签名 (五)、混合加密–不变的共享对称秘钥 (六)、混合加密–随机的共享对称秘钥 二、基于ECC的加密套件 (一)、加密套件概念 (二)、在网络中都涉及哪些加

qq_38338202的博客 1933

对称加密算法详解

对称加密算法是一种加密方式,它使用相同的密钥进行信息的加密和解密。这意味着发送方和接收方必须在通信之前共享一个密钥。这种加密方法简单且快速,适用于大量数据的加密。

跟佟格湾一起学习计算机知识吧~ 1910

C++利用spdlog生成日志

C++利用spdlog生成日志下载编译spdlog配置并使用 环境:Win10-x64+VS2015 spdlog是一个快速的C++日志库,能够兼容C++11,具备快速、无需依赖第三方库、支持多线程、多平台的优良特性! 下载编译spdlog 1.第一步,下载spdlog 下载spdlog,下载地址:https://github.com/gabime/spdlog#header-only-version,从Github上下载zip压缩包。下载完成后会获取一个名为spdlog-1.x.zip的压缩包 2.第二步

weixin_42975610的博客 3223

不可逆加密:说一下你常用的加密算法

加密算法我们整体可以分为:可逆加密和不可逆加密,可逆加密又可以分为:对称加密和非对称加密。 一、不可逆加密 常见的不可逆加密算法有MD5,HMAC,SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我们可以统称为SHA2加密算法,SHA加密算法的安全性要比MD5更高,而SHA2加密算法比SHA1的要高。其中SHA后面的数字表示的是加密后的字符串长度,SHA1默认会产生一个160位的信息摘要。 不可逆加密算法最

li123128的博客 1万+

关于esp32蓝牙模块的使用——esp32学习笔记

关于esp32蓝牙模块的使用——esp32学习笔记 零、前言 esp32自带蓝牙模块可以让我们进行蓝牙连接并进行数据交换 一、经典蓝牙BT 首先来编写代码,经典蓝牙的使用非常简单,首先声明使用了BluetoothSerial这个库,然后使用SerialBT.begin函数设置蓝牙的名字,再然后就是设置配对码,由于这里没有用到配对码,所以我将注释掉。当配对成功我们就使用printf函数打印出蓝牙配对成功。 #include <Arduino.h> #include <BluetoothSer

qq_53965184的博客 5万+

常见加密算法

1.不可逆的算法 主要为MD5和SHA-1算法 相同点:都是使用目前比较广泛的散列(Hash)函数,就是把任意长度的输入,变换成固定长度的输出,该输出就是散列值。计算的时候所有的数据都参与了运算,其中任何一个数据变化了都会导致计算出来的Hash值完全不同。 不同点:MD5输出是128位的,SHA-1输出是160位的,MD5比SHA1运行速度快,SHA1比MD5强度高。MD5一般用于文件的校验,SHA-1主要使用于数字签名标准。 MD5使用: public static String digest

延成的博客 1250

mongoDB 数据莫名其妙的没了

问题 之前没有接触过mongoDB,然后接手一个项目使用的是MongoDB,我就跟着网上的教程搭建一个MongoDB的服务,并运行起来。 一开始没有啥问题,成功的把服务与MongoDB都启动以来,运行也没有问题。但是过了几天,我再次打开时发现,以前的数据神奇的消失了。我还在想,是有什么定时清除的么,还是什么原因导致崩了然后数据就被清理了。 查找原因 第一次遇到我没有在意,重启了一下MongoDB,...

技术熊的博客小窝 1万+

Globus 数据下载

Globus 大数据下载流程~

weixin_43978558的博客 6645

千万别再用了,这些加密算法

优快云博客专家????,华为云享专家????,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

Muti-Agent 2万+

基于Python API的ECMWF大气数据批量下载与自动化处理实践

本文详细介绍了如何利用Python API实现ECMWF大气数据的自动化批量下载与处理。针对遥感分析中手动下载ERA5等数据的痛点,文章提供了从API密钥配置、核心脚本编写到元数据解析、任务队列调度及数据质量检查的全流程实践指南,旨在帮助科研与工程人员高效获取并处理大规模气象数据。

u8v9w0x1y的博客 479

ECC加密算法

前言 一、ECC加密算法产生背景 二、ECC加密算法简介 三、ECC加密算法原理介绍 四、ECC加密算法优缺点 1.优点 2.缺点 总结

xuanli4845的博客 2万+

泰凌微8258入门教程 环境篇④——开发板+烧录器 8258mesh新手套件购买

工欲善其事,必先利其器。 淘宝链接:https://item.taobao.com/item.htm?

4130

Open3D (C++) 使用点云创建数字高程模型DEM

Open3D (C++) 使用点云创建数字高程模型DEM

点云侠的博客 1392

通信加密算法

1.通过简单的URLENCODE + BASE64编码防止数据明文传输2 对普通请求、返回数据,生成MD5校验(MD5中加入动态密钥),进行数据完整性(简单防篡改,安全性较低,优点:快速)校验。3 对于重要数据,使用RSA进行数字签名,起到防篡改作用。4 对于比较敏感的数据,如用户信息(登陆、注册等),客户端发送使用RSA加密,服务器返回使用DES(AES)加密。原因:客户端发送之所以使用RSA加密,是因为RSA解密需要知道服务器私钥,而服务器私钥一般盗取难度较大;

qq_25303213的博客 8837

基于GA-BP遗传算法优化神经网络的多输入多输出数据预测-Python代码实现

多输入多输出的GA-BP神经网络

2301_80449389的博客 2309

DES分组加密算法

一:分组加密算法 1.1.概念 分组密码是将明文数字序列按照固定长度分组,并且用同一个密钥和同一个加密算法逐组加密,从而将各个明文分组变换成为密文分组的密码。 1.2.安全原则 (1)混乱原则:使得密文和对应明文和密钥之间的关系足够复杂,以至于密码分析者无法利用这种关系。 (2)扩散原则:使得每一个明文bit和密钥bit影响尽可能多的密文bit,用来隐藏明文的统计特性和结构规律...

敲代码的乔帮主 7659

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

对称加密算法和非对称加密算法介绍

对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发送方利用加密密钥、通过指定的加密算法将明文(原始数据)加密为密文,然后发送出去。数据接收方在收到密文后,需要使用加密时使用的密钥、以及加密算法的逆算法对该密文进行解密,才能对应的明文。在对称加密算法中,消息发送方和接收方都使用同一个密钥对数据进行加密和解密,所以,使用对称加密算法时,解密方需要事先知道消息的加密密钥。非对称加密算法需要两个密钥(密钥对),即公钥(public key)和私钥(private key)。

liitdar的博客 2794

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

对称加密算法和非对称加密算法的区别

对称加密算法和非对称加密算法的区别 1.对称加密算法加密和解密使用的密钥的是相同的,也就是只有一个密钥,而非对称加密算法有两个密钥,也就是加密和解密所使用的密钥是不同的 2.各自算法不同 3.对称加密算法加密速度快(相对的),非对称算法,密钥成对生成,公钥对外发布,但是对大数据的加解密速度比对称算法慢。 4.还有就是安全性不同,对称加密算法,在传输的过程中被窃听那就玩完了,而非对称加密算法就可以很...

小炀的博客 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

常见加密算法分类

常见的加密算法可以分成三类,对称加密算法,非对称加密算法和Hash算法。 对称加密     指加密和解密使用相同密钥的加密算法。对称加密算法的优点在于加解密的高速度和使用长密钥时的难破解性。假设两个用户需要使用对称加密方法加密然后交换数据,则用户最少需要2个密钥并交换使用,如果企业内用户有n个,则整个企业共需要n×(n-1) 个密钥,密钥的生成和分发将成为企业信息部门的恶梦。对称加密算法的安全

zuiyuezhou888的专栏 1万+

AES加密算法

AES加密算法 什么是AES加密算法? AES算法全称是Advanced Encryption Standard, 是DES算法的替代者,是当今最流行的对称加密算法之一 什么是对称加密算法? 对称加密:双方使用的同一个密钥,既可以加密又可以解密,这种加密方法称为对称加密,也称为单密钥加密。 优点:速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。 缺点:在数据传送前,发送方和接收方必须商定好秘钥,然后 使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么

DataWizard 3372

加密算法大全

加密算法从大的方面可以非为两类: 私钥体系公钥体系 其中公钥体系还可以进一步分为:

free2o的专栏 8113

加密算法总结

加密算法,密码学

桀骜不逊 9562
上一篇: 为什么MySQL不推荐使用uuid或者雪花id作为主键?
下一篇: 开放 API 接口签名验证
yonhu123java
博客等级 码龄14年 6粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值