你了解这些算法吗?SHA256、RIPEMD-160、DES、AES、RSA、ECC

2023-10-29

一、HASH算法

哈希散列算法和哈希摘要算法都叫做哈希算法。

(1)概念:

  • 把一段任意长度的数据变成均匀分布固定长度的数据、反之不可以
  • Hash不可逆
  • 在任何电脑,手机,或者笔算Hash值都是一样的
  • y=Hash(x)  已知x可以得到y,反之不可以
  • Hash散列就像一个人的指纹
  • Hash的结果y是均匀分布的

(2)常见hash算法

  • MD5 64位(Message-Digest Algorithm 5 消息摘要算法第五版)

安全哈希算法 Secure  Hash Algorithm(SHA)

  • SHA1 160位
  • SHA256 256位(比特币选择的双重SHA256算法,SHA256D)
  • SHA512 512位
  • RIPEMD-160 160位(比特币地址使用)

目前MD5和SHA1已经被中国山东大学王小云教授和Google攻破

在线hash算法工具:http://tool.oschina.net/encrypt?type=2

 

二、对称加密算法和非对称加密算法两者特点

 

三、对称加密算法

  • DES加解密算法:

       比较老的算法,一共有三个参数入口(原文,密钥,加密模式)。而3DES只是DES的一种模式,是以DES为基础更安全的变形,对数据进行了三次加密,也是被指定为AES的过渡算法。

  • AES加解密算法

       高级加密标准,新一代标准,加密速度更快,安全性更高。

 

四、非对称加密算法

  • RSA算法:

        RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest),阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年7月首次在美国公布,当时他们三人都在麻省理工学院工作实习。由其三人姓氏首字母组成。

        RSA算法基于一个的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却及其困难,因此可以将乘积公开作为加密密钥。

  • ECC算法

        Ellipse Curve Cryptography,椭圆曲线算法(比特币使用)。与传统的基于大质数因子分解困难性的加密算法不同,ECC通过椭圆曲线方程性质产生密钥ECC164位的密钥产生一个安全级,相当于RSA1024位密钥提供的保密强度,而且计算量更小,处理速度更快,存储空间和传输带宽占用较少。目前居民二代身份证正在使用256位的椭圆曲线密码,虚拟货币比特币也选择ECC作为加密算法。

RSA与ECC的对比

 

五、商业加密方式

  • 混合对称加密和非对称加密方式
  • 对称加密

优点:加密,加密快速,使用简单。

缺点:密码/密钥需要在网络上传输,不安全。

  • 非对称加密

优点:只有公钥在网络上传输,私钥留在本地,安全。

缺点:加密,加密比较慢,使用复杂

  • 混合模式(对称和非对称)https/tls

使用对称加密模式,但是对称加密的密码使用非对称加密方式传输。

组合了对称加密和非对称加密的有点,摒弃了它们的缺点。

 

六、加密算法在商业中的常见应用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你了解这些算法吗?SHA256、RIPEMD-160、DES、AES、RSA、ECC 的相关文章

  • 如何在 Go 和 Android 之间使用 RSA

    我 1 在 Go 中创建公钥并将其发送到 Android 2 android使用下面的代码来加密它的数据以字符串类型发送到Go 3 去获取字符串数据并尝试解密 但不能 我的Go代码 DecryptWithPrivateKey decrypt
  • 如何在 Java 中创建安全的随机 AES 密钥?

    使用标准 JDK 在 Java 中生成安全 随机 AES 密钥的推荐方法是什么 在其他帖子中 我发现了这一点 但是使用SecretKeyFactory可能是一个更好的主意 KeyGenerator keyGen KeyGenerator g
  • 如何在java服务器端解密cryptojs AES加密消息?

    我有以下基于 cryptojs 的 javascript 加密 解密函数 它工作得很好 我在使用 cryptpjs 加密消息时使用随机盐 随机 iv 值和特定密码 我在解密加密消息时重复使用相同的盐 iv 和密码来生成密钥 这部分效果很好
  • 将 PEM 公钥读取到 iOS 中

    我有一个由 java 使用以下代码生成的 base64 公钥 RSAPublicKeySpec rsaKS new RSAPublicKeySpec modulus pubExponent RSAPublicKey rsaPubKey RS
  • 寻找 AES-CTR 加密的输入

    由于 CTR 模式下的 AES 非常适合随机访问 假设我有一个使用CipherOutputStream在 AES CTR 模式下 下面的图书馆 不是我的 使用RandomAccessFile允许查找文件中的特定字节偏移量 我最初的想法是使用
  • 使用 Crypto++ 库以 CBC 模式实现 AES128

    在输入文件中我有 第一行是一个以十六进制编码的密钥 长度为 16 个字节 在第二行加密消息 CBC 模式下的 AES128 在加密消息前面添加随机 iv 这就是我尝试解密的方法 include
  • 如何从模数、指数和私有指数创建 Crypt::RSA 对象?

    我正在尝试将以下 php 功能移植到 perl public function loadKey mod exp type public rsa new Crypt RSA rsa gt signatureMode CRYPT RSA SIG
  • 在 Android 中解密从 .net 生成的 RSA 加密值

    我在这里浏览了很多帖子 但没有找到正确的解决方案 我想从 Android 解密在 c net 中加密的值 我已使用以下代码片段在 net平台中成功解密 public static void Main string privateKey Ba
  • AES:如何检测输入的密码是否错误?

    A text s已加密 s2 iv Crypto Cipher AES new Crypto Hash SHA256 new pwd digest Crypto Cipher AES MODE CFB iv encrypt s encode
  • 从 X.509 证书中提取 PEM 公钥

    我已经创建了一个包含公钥 DER 文件的证书 但我现在需要 PEM 格式的公钥用于不同的平台 目的是使用相同的公钥 我使用创建它iOS 中的 RSA 加密并使用 PHP 解密 http jslim net blog 2013 01 05 r
  • 为我的 AES 方法创建字节数组需要多少个字符?

    我在这里使用 AES 方法 http msdn microsoft com en us library system security cryptography rijndaelmanagement aspx http msdn micro
  • 使用 .NET 类进行 OpenSSL 加密

    我希望创建一个使用与 OpenSSL 兼容的 NET 库的类 我知道有一个 OpenSSL Net 包装器 但我希望避免引用第 3 方 非托管代码 我并不是要讨论这是否是正确的选择 但这是有原因的 目前我有以下内容 我认为它应该与 Open
  • C# 中加密的数据太长,无法在 Java 中解密

    我有一个用 Java 编写的服务器 它在将其发送到客户端之前将其 RSA 密钥转换为 NET 使用的 XML 格式 public String getPublicKeyXML try KeyFactory factory KeyFactor
  • 为什么桌面 AES 文件 IO 与 Android AES 文件 IO 不兼容?

    我已将一个应用程序从 Android 移植到桌面 该应用程序使用 AES 加密一些私人数据 两个应用程序都能够加密和解密数据以供自己使用 但无法解密其他应用程序的数据 AES 密钥 IV 和算法是相同的 这两个应用程序之间的主要区别在于 a
  • 无需动态分配的RSA实现

    典型的 RSA 实现包含一个多精度整数库 典型的多精度整数库使用动态分配将大整数表示为大小合适的机器字数组 我预计当使用多精度整数仅使用 RSA 2048 来加密或解密已知长度的消息 通常是对称加密密钥 时 可能会遇到数学整数的限制 并且它
  • PHP shell_exec 使用 ssh 运行 shell 脚本

    我有一个 shell 脚本 使用 ssh 和密钥连接到另一台机器 因此它不需要用户名和密码 当我从命令行运行这个脚本时 它工作正常 但是当我从 php shell exec 运行这个脚本时 它不起作用 如果我与 PHP 建立 ssh 连接并
  • Java AES 256 加密

    我有下面的 java 代码来加密使用 64 个字符密钥的字符串 我的问题是这会是 AES 256 加密吗 String keyString C0BAE23DF8B51807B3E17D21925FADF273A70181E1D81B8EDE
  • 对于使用 CCCrypt() 的 AES128,密钥可以长于 128 位吗?

    我正在使用CCCrypt https developer apple com library archive documentation System Conceptual ManPages iPhoneOS man3 CCCrypt 3c
  • AES 密钥是随机的吗?

    AES 密钥可以通过此代码生成 KeyGenerator kgen KeyGenerator getInstance AES kgen init 128 but 如果我有一个 非常可靠 的生成随机数的方法 我可以这样使用它吗 SecureR
  • 将 PHP 中的 openssl AES 转换为 Python AES

    我有一个 php 文件 如下所示 encryption encoded key c7e1wJFz PBwQix80D1MbIwwOmOceZOzFGoidzDkF5g function my encrypt data key encrypt

随机推荐

  • java基础学习 day21(数组的内存原理)

    1 java内存分配 栈 方法运行时使用的内存 比如main 方法运行 进入栈中运行 方法开始执行时会进栈 代码执行完毕会出栈 堆 存储对象或者数组 用new关键字来创建的 都存储在堆中 new出来的东西会在这块内存中开辟空间并产生地址 方
  • mysql半同步复制安装配置

    一 半同步复制介绍 1 半同步复制产生的起源 默认情况下 MySQL复制是异步的 主服务器将事件写入其二进制日志 但不知道从服务器是否或何时检索并处理它们 对于异步复制 如果主服务器崩溃 它提交的事务可能不会传输到任何从服务器 因此 在这种
  • swing jtextArea滚动条和文字缩放

    当加了滚动条的jtextArea添加滚动事件比如缩放ctrl wheel时 添加的滚动事件和滚动缩放事件会重合 如何让这两个事件同时发生而不会相互干扰呢 也就是滚动条放大缩小时文本不会发生上下滚动 import javax swing im
  • 刷脸支付飞速发展带动了支付技术的变革

    移动支付的飞速发展带动了支付技术的变革 NFC支付 二维码支付 指纹支付等支付方式正活跃在我们的日常生活中 而人脸识别技术的成熟和人们对支付便捷安全性需求的提升 使得刷脸支付逐渐进入大众视野 随着移动支付的飞速发展 聚合支付也迅速渗透到各种
  • Hibernate注解开发关于Id的若干问题

    Hibernate的基本注解注解式开发 Hibernate基本注解 其实在id的注解上 还是有很多有意思的东西 这些东西我们要从Hibernate内置的主键生成策略讲起 Hibernate内置的主键生成策略 一 assigned 主键由外部
  • 【读书笔记->统计学】11-02 总体和样本的估计-总体比例、样本比例、根据总体预测样本比例概念简介

    总体比例与样本比例 假设一个情境 曼帝糖果公司再一次进行了抽样 以便利用调查结果预测 总体中有多大比例的人 可能偏爱曼帝公司的糖球 结果发现 在40个人中有32个人偏爱他们的口香糖球 其余8个人则偏爱竞争对手的口香糖球 首席执行官感兴趣的是
  • 对随机字符串进行排序

    关于对随机字符串进行排序 def createId num salt tp k chars a0v1c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x4y5z6 生成num个随机数 for n in ra
  • QCustomPlot系列(7)-鼠标跟随显示坐标值(也即:十字游标功能)游标可以吸附采样点

    先来个动图看看效果 这个动图中实现的功能有 1 十字线游标的X值跟随鼠标 Y值不跟随 2 游标的Y值跟随鼠标的X值对应的曲线的Y值 可以点击图例 更换游标跟随哪个曲线的Y值 3 游标不会出现在曲线中不存在点上 而是自动吸附到距离鼠标最近的曲
  • ElasticSearch V2.3部署问题

    ElasticSearch V2 3 CentOS 7 3个节点 研究ElasticSearch V2 3 进行了2天 终于搞明白大部分配置信息含义并且部署成功了 主要问题在于之前的没有接触过 并且2 3版本之前的版本区别不小 根据之前的文
  • 【2023】最新基于Spring Cloud的微服务架构分析

    Spring Cloud是一个相对比较新的微服务框架 2016年才推出1 0的release版本 虽然Spring Cloud时间最短 但是相比Dubbo等RPC框架 Spring Cloud提供的全套的分布式系统解决方案 Spring C
  • 【论文阅读翻译】Action Assessment by Joint Relation Graph

    论文阅读翻译 Action Assessment by Joint Relation Graph KeyWords Abstract Introduction Related Work Approach Experiment KeyWord
  • docker基础篇-----04-----命令添加容器数据卷、dockerfile添加容器数据卷、容器间数据卷共享(--volumes-from)

    参考文章 学习笔记 尚硅谷周阳老师的Docker教程学习笔记 一 容器数据卷 1 容器数据卷 1 什么是容器数据卷 容器删除后数据自然也就没有了 所以用卷来保存数据 容器数据卷功能是持久化和数据共享 卷就是目录或文件 存在于一个或多个容器中
  • springboot中ElasticSearch入门与进阶:组合查询、Aggregation聚合查询(你想要的都有)

    1 springboot中配置elasticSearch 1 1在工程中引入相关的jar包 1 1 1 在build gradle中添加需要的jar包 我创建的gradle工程 对应的maven工程也是一样 添加对应的jar包即可 添加 S
  • linux shell 时间运算以及时间差计算方法

    最近一段时间 在处理Shell 脚本时候 遇到时间的处理问题 时间的加减 以及时间差的计算 1 时间加减 这里处理方法 是将基础的时间转变为时间戳 然后 需要增加或者改变时间 变成 秒 如 1990 01 01 01 01 01 加上 1小
  • 3D人脸模型Flame ----《Learning a model of facial shape and expression from 4D scans》论文讲解及代码注释

    前文 在阅读论文前 首先我们要有一定的知识储备 包括人脸建模 表情制作 旋转转换等 才能方便我们的论文理解 所以首先我会讲解一些关键的知识点 Flame模型的作用 Flame是一个3D人脸的通用模型 举个例子 你现在有一个特定人的3D人脸扫
  • LeetCode练习笔记

    c 解法 文章目录 1 两数之和 简单 题目 方法一 两遍哈希表 方法二 一遍哈希表 2 整数反转 中等 题目 解题方法 3 无重复字符的最长子串 中等 解题方法 4 寻找两个正序数组的中位数 难 解题方法 5 腾讯 6 字节跳动 7 腾讯
  • GCC/CLANG编译器

    文章目录 编译指令 编译过程 预处理 生成汇编代码 词法分析 语法分析 语义分析 生成中间代码 代码生成 LLVM IR 汇编 链接 lib库的链接 clang 编译指令 链接方式 将OC反编译为C GCC是在linux下使用的编译器 Cl
  • Research Productivity Index-概率dp

    题目描述 Angela is a new PhD student and she is nervous about the upcoming paper submission deadline of this year s research
  • 百度又发布一个神器!网友直呼好家伙

    目标检测作为计算机视觉领域的顶梁柱 不仅可以独立完成车辆 商品 缺陷检测等任务 也是人脸识别 视频分析 以图搜图等复合技术的核心模块 在自动驾驶 工业视觉 安防交通等领域的商业价值有目共睹 正因如此 YOLOv5 YOLOX PP YOLO
  • 你了解这些算法吗?SHA256、RIPEMD-160、DES、AES、RSA、ECC

    一 HASH算法 哈希散列算法和哈希摘要算法都叫做哈希算法 1 概念 把一段任意长度的数据变成均匀分布固定长度的数据 反之不可以 Hash不可逆 在任何电脑 手机 或者笔算Hash值都是一样的 y Hash x 已知x可以得到y 反之不可以