iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android数据加密之SHA安全散列算法
  • 932
分享到

Android数据加密之SHA安全散列算法

sha加密散列算法算法Android 2022-06-06 07:06:14 932人浏览 泡泡鱼
摘要

前言: 对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256

前言:

对于SHA安全散列算法,以前没怎么使用过,仅仅是停留在听说过的阶段,今天在看图片缓存框架Glide源码时发现其缓存的Key采用的不是MD5加密算法,而是SHA-256加密算法,这才勾起了我的好奇心,所以趁着晚上没啥事,来学习一下。

其他几种加密方式:

 •Android数据加密之Rsa加密
 •Android数据加密之Aes加密
 •Android数据加密之Des加密
 •Android数据加密之MD5加密
 •Android数据加密之Base64编码算法

SHA加密算法 

    SHA(Secure Hash AlGorithm,安全散列算法),数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域。和MD5加密算法一样,也是一种不可逆的加密算法,不过也可以通过穷举法破解,但是SHA的破译难度与成本要高于MD5,相对于MD5更加安全,现在已成为公认的最安全的散列算法之一,并被广泛使用。主要包括SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512这几种单向散列算法。SHA-1,SHA-224和SHA-256适用于长度不超过2^64二进制位的消息。SHA-384和SHA-512适用于长度不超过2^128二进制位的消息。官方解说如下:

 •由消息摘要反推原输入消息,从计算理论上来说是很困难的。
 •想要找到两组不同的消息对应到相同的消息摘要,从计算理论上来说也是很困难的。任何对输入消息的变动,都有很高的机率导致其产生的消息摘要迥异。 

SHA加密原理

     SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。 

     单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性。如果在输入序列中嵌入密码,那么任何人在不知道密码的情况下都不能产生正确的散列值,从而保证了其安全性。SHA将输入流按照每块512位(64个字节)进行分块,并产生20个字节的被称为信息认证代码或信息摘要的输出。 

    该算法输入报文的长度不限,产生的输出是一个160位的报文摘要。输入是按512 位的分组进行处理的。SHA-1是不可逆的、防冲突,并具有良好的雪崩效应。 

通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改。 

    Mac (信息认证代码)就是一个散列结果,其中部分输入信息是密码,只有知道这个密码的参与者才能再次计算和验证MAC码的合法性。 

SHA加密优点 

由于SHA也是有MD4演变过来的,所以其优点与MD5大致一样
•压缩性:任意长度的数据,算出的SHA值长度都是固定的。
•容易计算:从原数据计算出SHA值很容易。 
•抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的SHA值都有很大区别。
•强抗碰撞:已知原数据和其SHA值,想找到一个具有相同SHA值的数据(即伪造数据)是非常困难的。 

SHA应用场景 

•一致性验证
•数字签名
•安全访问认证 

SHA加密的简单实现 

这里代码演示以SHA-256为例。 


  public static String sha(String string) {
    if (TextUtils.isEmpty(string)) {
      return "";
    }
    MessageDigest md5 = null;
    try {
      md5 = MessageDigest.getInstance("sha-256");
      byte[] bytes = md5.digest((string ).getBytes());
      String result = "";
      for (byte b : bytes) {
        String temp = Integer.toHexString(b & 0xff);
        if (temp.length() == 1) {
          temp = "0" + temp;
        }
        result += temp;
      }
      return result;
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    }
    return "";
  }

SHA安全性探讨 

•SHA-1在许多安全协议中广为使用,包括TLS和SSL、PGP、ssh、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的散列函数)的后继者。2005年,密码学家就证明SHA-1的破解速度比预期提高了2000倍,虽然破解仍然是极其困难和昂贵的,但随着计算机变得越来越快和越来越廉价,SHA-1算法的安全性也逐年降低,已被密码学家严重质疑,希望由安全强度更高的SHA-2替代它。 

•SHA-224、SHA-256、SHA-384,和SHA-512并称为SHA-2。 

•新的散列函数并没有接受像SHA-1一样的公众密码社区做详细的检验,所以它们的密码安全性还不被大家广泛的信任。 

•虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似;因此有些人开始发展其他替代的散列算法。 

跨国公司事迹:
 
  Google官方博客宣布,将在Chrome浏览器中逐渐降低SHA-1证书的安全指示。但有意思的是Google.com目前使用的也是SHA-1签名的证书,但证书将在3个月内过期,Google将从2015年起使用SHA-2签名的证书。SHA-1算法目前尚未发现严重的弱点,但伪造证书所需费用正越来越低。

您可能感兴趣的文章:java异或加密算法Android数据加密之异或加密算法的实现方法


--结束END--

本文标题: Android数据加密之SHA安全散列算法

本文链接: https://www.lsjlt.com/news/23806.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解Android安全防护之加密算法
    目录摘要Android应用常用的加密算法MD5RSAAES摘要 也许有些开发者或者企业觉得。我们公司的app,数据量这些少,会有那个黑客吃饱了没事做来破解啊。又不是支付宝,或者其他那...
    99+
    2024-04-02
  • Java实现SHA-256加密算法的完全解析
    目录实现原理应用Java实现代码知识点补充SHA-256是一种散列(哈希)算法,用于将任意长度的数据映射为固定长度的散列值,以保证数据完整性。SHA-256是SHA(Secure H...
    99+
    2023-02-07
    Java实现SHA-256加密算法 Java SHA-256加密算法 Java SHA-256 Java加密算法
  • 【数据安全】4. Android 文件级加密(File-based Encryption)之密钥管理
    1. FBE 密钥管理简介 在前文《【数据安全】3. Android 文件级加密(File-based Encryption)技术介绍》  中介绍了在HLOS中 FBE 的软件流程,而密钥管理则贯穿于整个流程中。 密钥管理中有以下关键对象...
    99+
    2023-09-06
    android linux 系统安全 安全 安全架构
  • Android数据加密与安全存储的方法是什么
    在Android平台上,数据加密与安全存储可以通过以下几种方法来实现: 使用Android提供的加密API:Android提供了...
    99+
    2024-04-30
    Android
  • 怎么理解散列算法在C# 加密中的应用
    怎么理解散列算法在C# 加密中的应用,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。散列算法是C# 加密中经常会用到的方法,那么什么是散列算法呢?它的作用是如何实现的呢?那么...
    99+
    2023-06-17
  • 最安全的加密算法Bcrypt防止数据泄露详解
    目录引言哈希(Hash)与加密(Encrypt)不可逆的MD5为什么是不安全的?如何防御彩虹表的破解?一个更难破解的加密算法BcryptPasswordEncoder 接口引言 这是...
    99+
    2024-04-02
  • Android安全加密的方法是什么
    Android安全加密的方法主要包括以下几种: 使用SSL/TLS协议进行数据传输加密:通过SSL/TLS协议对网络通信进行加密...
    99+
    2024-03-08
    Android
  • 数据库数据加密之谜:解锁数据安全的新境界
    加密:数字护盾 数据加密是一种将数据转换为无法识别的形式的过程。通过使用复杂的算法和密钥,加密机制确保只有授权用户才能解密和访问数据。加密为数据库提供了额外的安全层,防止数据泄露、盗窃或篡改。 加密类型:技术的多样性 有各种加密类型可用于...
    99+
    2024-04-02
  • 数据库数据加密的桥梁:连接数据世界与安全之境
    现代数据环境要求平衡便捷的访问与数据的保密性和完整性。数据库数据加密是实现这一平衡的至关重要的工具,通过在数据传输和存储过程中对其进行加密来保护敏感信息。 数据加密的方法 数据库数据加密有两种主要方法: 透明数据加密 (TDE):在数据...
    99+
    2024-04-02
  • SpringBoot安全策略开发之集成数据传输加密
    目录前言生成DESKey生成RSA密钥对前端DES加密前端RSA加密后端RSA解密后端DES解密后端自定义拦截器前言 近期在对开发框架安全策略方面进行升级优化,提供一些通用场景的解决...
    99+
    2023-01-02
    SpringBoot数据传输加密 SpringBoot数据加密
  • .Net使用加密升级数据安全
    最近又被【现场破解共享单车系统】刷了一脸,不得不开始后怕:如何防止类似的情况发生? 想来想去,始终觉得将程序加密是最简单的做法。但是摩拜、ofo也有加密,为什么仍然被破解?那是因为请...
    99+
    2024-04-02
  • PHP加密算法函数全面解析:password_hash、password_verify、openssl_encrypt等函数的加密算法应用
    PHP加密算法函数全面解析:password_hash、password_verify、openssl_encrypt等函数的加密算法应用在现代互联网世界中,数据安全成为了一件非常重要的事情。为了保护用户的隐私信息,我们需要对敏感数据进行加...
    99+
    2023-11-18
    password_hash password_verify PHP加密算法函数
  • 数据库数据加密的奥义:开启数据安全的黄金法则
    服务器端加密: 服务器端加密在数据库服务器级别进行加密。这确保了数据在传输或存储时都处于加密状态。它防止未经授权的访问,即使攻击者设法访问数据库服务器。 客户端端加密: 客户端端加密在客户端应用程序级别进行加密。这确保了数据在离开数据库服...
    99+
    2024-04-02
  • 怎么用对称加密算法实现C#数据加密
    这篇文章主要讲解了“怎么用对称加密算法实现C#数据加密”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用对称加密算法实现C#数据加密”吧!以下是关于对称加密算法的C#数据加密实现代码,大家...
    99+
    2023-06-18
  • 金融数据用什么加密算法
    常用于加密金融数据的加密算法有以下几种DES加密算法DES加密算法是一种分组密码,以64位为分组对数据加密,它的密钥长度是56位,加密解密用同一算法。DES加密算法是对密钥进行保密,而公开算法,包括加密和解密算法。MD5加密算法MD5为计算...
    99+
    2024-04-02
  • 数据传输用什么加密算法
    常用于数据传输加密的加密算法有以下几种RSA算法RSA算法是一种使用不同的加密密钥与解密密钥,是由已知加密密钥推导出解密密钥在计算上是不可行的密码体制,其原理是根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以...
    99+
    2024-04-02
  • 什么算法适合加密短数据
    适合加密短数据的加密算法有以下几种RSA算法RSA算法是一种使用不同的加密密钥与解密密钥,是由已知加密密钥推导出解密密钥在计算上是不可行的密码体制,其原理是根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘...
    99+
    2024-04-02
  • 大量数据加密用什么算法
    常用于加密大量数据的加密算法有以下几种MD5算法MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护,MD5是以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个3...
    99+
    2024-04-02
  • 数据加密属于什么安全措施
    数据加密是保护数据安全的重要手段,数据加密的作用是保障信息被人截获后不能读懂其含义,可以防止计算机网络病毒,所以数据加密也是一种网络安全措施。...
    99+
    2024-04-02
  • 网络数据加密算法有哪些
    常见的网络数据加密算法有以下几种AES加密算法AES算法是基于排列和置换运算实现的,排列是对数据重新进行安排,置换是将一个数据单元替换为另一个,AES是一个迭代的、对称密钥分组的密码,是使用相同的密钥进行加密和解密数据的。RSA加密算法RS...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作