范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

快速了解常用的对称加密算法,再也不用担心面试官的刨根问底

  面试官:说一说你常用的加密算法有哪些?
  加密算法通常被分为两种: 对称加密 和非对称加密 。其中,对称加密算法在加密和解密时使用的密钥相同;非对称加密算法在加密和解密时使用的密钥不同,分为公钥和私钥。此外,还有一类叫做消息摘要算法 ,是对数据进行摘要并且不可逆的算法。
  这次我们了解一下对称加密算法。 对称加密算法
  对称加密算法在加密和解密时使用的密钥相同,或是使用两个可以简单地相互推算的密钥。在大多数的对称加密算法中,加密和解密的密钥是相同的。
  它要求双方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送的信息进行解密,这也是对称加密算法的主要缺点之一。
  常见的对称加密算法有:DES算法、3DES算法、AES算法。 DES算法
  DES算法(Data Encryption Standard)是一种常见的分组加密算法。
  面试官:什么是分组加密算法?
  分组加密算法是将明文分成固定长度的组,每一组都采用同一密钥和算法进行加密,输出也是固定长度的密文。
  由IBM公司在1972年研制,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。
  在DES算法中,密钥固定长度为64位。明文按64位进行分组,分组后的明文组和密钥按位置换或交换的方法形成密文组,然后再把密文组拼装成密文。
  密钥的每个第八位设置为奇偶校验位,也就是第8、16、24、32、40、48、56、64位,所以密钥的实际参与加密的长度为56位。
  我们用Java写个例子: import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; import java.util.Base64;  public class DesUtil {      private static final String DES = "DES";     private static final Charset CHARSET = StandardCharsets.UTF_8;      /**      * 加密      *      * @param input 明文      * @param key   密钥      * @return 密文      * @throws GeneralSecurityException      */     public static String encrypt(String input, String key) throws GeneralSecurityException {         Cipher cipher = Cipher.getInstance(DES);         SecretKey keySpec = new SecretKeySpec(key.getBytes(CHARSET), DES);         cipher.init(Cipher.ENCRYPT_MODE, keySpec);         byte[] data = cipher.doFinal(input.getBytes(CHARSET));         return Base64.getEncoder().encodeToString(data);     }      /**      * 解密      *      * @param input 密文      * @param key   密钥      * @return 明文      * @throws GeneralSecurityException      */     public static String decrypt(String input, String key) throws GeneralSecurityException {         Cipher cipher = Cipher.getInstance(DES);         SecretKey keySpec = new SecretKeySpec(key.getBytes(CHARSET), DES);         cipher.init(Cipher.DECRYPT_MODE, keySpec);         byte[] data = cipher.doFinal(Base64.getDecoder().decode(input));         return new String(data, CHARSET);     }      public static void main(String[] args) throws GeneralSecurityException {         String msg = "我喜欢你,可以做我女朋友吗?";         String key = "One-More";         System.out.println("加密前:" + msg);         String pwd = DesUtil.encrypt(msg, key);         System.out.println("加密后:" + pwd);         System.out.println("解密后:" + DesUtil.decrypt(pwd, key));     } }
  运行结果如下: 加密前:我喜欢你,可以做我女朋友吗? 加密后:i5LZ5aJMrlgN+Pr5IQm87Q14k0kmDLFIPnJmtrGA/xBHG0SivGrqCrc3vXjZoCBm 解密后:我喜欢你,可以做我女朋友吗?
  DES现在已经不是一种安全的加密方法,主要因为它使用的密钥过短,很容易被暴力破解。 3DES算法
  3DES算法(Triple Data Encryption Algorithm)是DES算法的升级版本,相当于是对明文进行了三次DES加密。
  由于计算机运算能力的增强,DES算法由于密钥长度过低容易被暴力破解;3DES算法提供了一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。
  在DES算法中,密钥固定长度为192位。在加密和解密时,密钥会被分为3个64位的密钥。
  面试官:3DES算法加密和解密的过程是什么样子的?
  加密过程如下: 使用第一个密钥加密明文。 使用第二个密钥解密上一步的结果。 使用第三个密钥加密上一步的结果。
  解密过程如下: 使用第三个密钥解密明文。 使用第二个密钥加密上一步的结果。 使用第一个密钥解密上一步的结果。
  我们用Java写个例子: import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; import java.util.Base64;  public class TripleDesUtil {      private static final String DESede = "DESede";     private static final Charset CHARSET = StandardCharsets.UTF_8;      /**      * 加密      *      * @param input 明文      * @param key   密钥      * @return 密文      * @throws GeneralSecurityException      */     public static String encrypt(String input, String key) throws GeneralSecurityException {         Cipher cipher = Cipher.getInstance(DESede);         SecretKey keySpec = new SecretKeySpec(key.getBytes(CHARSET), DESede);         cipher.init(Cipher.ENCRYPT_MODE, keySpec);         byte[] data = cipher.doFinal(input.getBytes(CHARSET));         return Base64.getEncoder().encodeToString(data);     }      /**      * 解密      *      * @param input 密文      * @param key   密钥      * @return 明文      * @throws GeneralSecurityException      */     public static String decrypt(String input, String key) throws GeneralSecurityException {         Cipher cipher = Cipher.getInstance(DESede);         SecretKey keySpec = new SecretKeySpec(key.getBytes(CHARSET), DESede);         cipher.init(Cipher.DECRYPT_MODE, keySpec);         byte[] data = cipher.doFinal(Base64.getDecoder().decode(input));         return new String(data, CHARSET);     }      public static void main(String[] args) throws GeneralSecurityException {         String msg = "我喜欢你,可以做我女朋友吗?";         String key = "One-More12345678One.More";         System.out.println("加密前:" + msg);         String pwd = TripleDesUtil.encrypt(msg, key);         System.out.println("加密后:" + pwd);         System.out.println("解密后:" + TripleDesUtil.decrypt(pwd, key));     } }
  运行结果如下: 加密前:我喜欢你,可以做我女朋友吗? 加密后:q/ZWtjDGoxIjmd30he0oZ3XLjJhh/ACedaXaj12Zi3Wtlqz+ZzJmQuScjKuZoONF 解密后:我喜欢你,可以做我女朋友吗?
  虽然3DES算法在安全性上有所提升,但是因为使用了3次DES算法,加密和解密速度比较慢。 AES算法
  AES(Advanced Encryption Standard,高级加密标准)主要是为了取代DES加密算法的,虽然出现了3DES的加密方法,但由于它的加密时间是DES算法的3倍多,密钥位数还是不能满足对安全性的要求。
  1997年1月2号,美国国家标准与技术研究院(NIST)宣布希望征集高级加密标准,用以取代DES。全世界很多密码工作者都提交了自己设计的算法。经过甄选流程,高级加密标准由美国国家标准与技术研究院于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。
  该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以 Rijndael 为名投稿高级加密标准的甄选流程。
  面试官:AES算法的密钥长度是固定的吗?
  AES算法的密钥长度是固定,密钥的长度可以使用128位、192位或256位。
  AES算法也是一种分组加密算法,其分组长度只能是128位。分组后的明文组和密钥使用几种不同的方法来执行排列和置换运算形成密文组,然后再把密文组拼装成密文。
  我们用Java写个例子: import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.GeneralSecurityException; import java.util.Base64;  public class AesUtil {      private static final String AES = "AES";     private static final Charset CHARSET = StandardCharsets.UTF_8;      /**      * 加密      *      * @param input 明文      * @param key   密钥      * @return 密文      * @throws GeneralSecurityException      */     public static String encrypt(String input, String key) throws GeneralSecurityException {         Cipher cipher = Cipher.getInstance(AES);         SecretKey keySpec = new SecretKeySpec(key.getBytes(CHARSET), AES);         cipher.init(Cipher.ENCRYPT_MODE, keySpec);         byte[] data = cipher.doFinal(input.getBytes(CHARSET));         return Base64.getEncoder().encodeToString(data);     }      /**      * 解密      *      * @param input 密文      * @param key   密钥      * @return 明文      * @throws GeneralSecurityException      */     public static String decrypt(String input, String key) throws GeneralSecurityException {         Cipher cipher = Cipher.getInstance(AES);         SecretKey keySpec = new SecretKeySpec(key.getBytes(CHARSET), AES);         cipher.init(Cipher.DECRYPT_MODE, keySpec);         byte[] data = cipher.doFinal(Base64.getDecoder().decode(input));         return new String(data, CHARSET);     }      public static void main(String[] args) throws GeneralSecurityException {         String msg = "我喜欢你,可以做我女朋友吗?";         String key = "One-More12345678One.More87654321";         System.out.println("加密前:" + msg);         String pwd = AesUtil.encrypt(msg, key);         System.out.println("加密后:" + pwd);         System.out.println("解密后:" + AesUtil.decrypt(pwd, key));     } }
  运行结果如下: 加密前:我喜欢你,可以做我女朋友吗? 加密后:dT29xX+XpPTO3OMuDw1ASyU/+aNfJ1K+endNUJ84h2KZhqRDNfiO4hAQjOXMCoN4 解密后:我喜欢你,可以做我女朋友吗?
  AES算法是目前应用最广泛的对称加密算法。 总结
  对称加密算法在加密和解密时使用的密钥相同,常见的对称加密算法有:DES算法、3DES算法、AES算法。
  由于安全性低、加密解密效率低,DES算法和3DES算法是不推荐使用的,AES算法是目前应用最广泛的对称加密算法。
  竟然已经看到这里了,你我定是有缘人,留下你的点赞和关注,他日必成大器。
  作者:  万猫学社
  出处:https://www.cnblogs.com/heihaozi/p/15953670.html

iQOO8评测直屏电竞旗舰,更是不容低估的标准版2KLTPO屏幕超声波3D广域指纹50W无线闪充定制双主摄太多的光环加持,让今年的iQOO8Pro成为大众焦点,也让同系列的标准版被不少人忽视,但等到真正上手后你就会发现,看上去没荣耀60Pro规格参数曝光外观,参数进一步升级,不愧是荣耀无人不晓,HONOR是一家深受消费者喜爱的手机厂商,也非常愿意投资产品创新。所以,HONOR为行业带来了许多广受好评的产品。比如荣耀8荣耀V30Pro和荣耀50系列等。这些产品在设千元机首选红米?对比同价位荣耀机型,差距实在太大了说到千元机,很多人想到的品牌就是红米。作为小米的子品牌,红米在千元机市场一直拥有绝对的统治地位。相对低廉的价格使得千元机拥有庞大的用户,千元市场也成为手机品牌必争的价位段。其它品牌华为nova9芯片确定!荣耀50同款,但不支持5G近日网上曝光了华为nova9系列智能手机的芯片规格,该系列机器将采用骁龙778G芯片的4G版本,虽然骁龙778G芯片内置了5G基带,但是由于射频芯片等元器件的缺失,华为依旧没有办法外卖员发明超级电动车,从山东跑到浙江,网友大开眼界外卖行业的出现改变了人们的生活方式,现在外卖已经成为了许多年轻人生活中不可或缺的组成部分,年轻人工作繁忙,没有时间做饭,大家只需要打开手机点个外卖就能吃到热气腾腾的饭。外卖平台的出电信推出全新5G手机卡,69元60G通用流量,老用户直呼划算自2019年三大运营商正式商用5G网络之后,5G便成为大家茶余饭后讨论的热点话题,但在运营商公布首批5G套餐价格之后让不少人都避而远之,因为三大运营商的5G套餐价格都为128元起,马云跌落神坛,很多人落井下石是有脑子的人干的吗?马云和阿里跌落了神坛,很多人对马云落井下石,好像他没有一样好的,难道就不带脑子想问题的吗?对于老百姓的我们来说,他的企业垄断变成了不可控的庞然大物,这也不是他一个人做的,而是企业发苹果让步允许媒体类应用绕过应用商店进行第三方支付央视财经(记者张博涵)综合美国有线电视新闻网和道琼斯旗下新闻网站MarketWatch报道,苹果公司当地时间1日晚间更新了苹果应用商店的政策,将允许媒体类应用程序的用户绕过苹果商城电商冲击之下,实体店行业越发萧条,为何街边药店还越开越多?引言众所周知,在互联网时代背景和电商的冲击之下,实体行业越发萧条,越来越多老板抱怨生意难做,不管是电商的崛起又或是门店的租金造成了实体行业的萧条,在这个时代,如果还是墨守成规不求变性价比都是伪命题!这三款手机才是真的行业天花板,别错过大家都知道,现在手机选购很多人都看性价比,但是实际上每个人心中都知道一件事儿一分价钱一分货。这个世界上,可能有高价低配的手机,但是指定没有高配低价的手机所谓性价比其实是在你看中的地美团滴滴再次被约谈,平台与用户身份互换?据悉美团和滴滴再次被请去喝茶了。其喝茶内容大致为以下五点规范运营公平竞争保障司机与用户的权益完善公司制度责任保障数据安全。这几拳头下来,可谓是刚刚击中美团滴滴的软肋。逼得美团滴滴放
直8直升机到底有多少种改型?怎么分辨?严格来讲,这个问题应该这么问法国超黄蜂直升机在中国到底有多少个远房亲戚正片开始之前各位请看一眼原汁原味的超黄蜂直升机。图为法国海军航空兵的SA321超黄蜂直升机20世纪70年代中国苹果接连传来两个好消息,一个手机一个系统,用户更关心哪个?对于手机,大家真的会缺吗?智能手机普及速度很快,人均已经不止一台智能手机,新品手机发布的周期也在加速,每个月都有新款手机亮相,如果都跟着去选择那真是大可不必。8月18日,苹果团队发九阳不粘涮烤一体机测评1400W分区独立控温,品牌联名一定贵?我算是半个啃老族吧!虽然已成家,女儿也十多岁了,但是家里一天三餐都是由老妈照顾。如果,某天老妈外出有事,我们的小家庭甘愿去外面饭店随便蹭一点,也不懒得自己开锅烧饭。有时候想想,这样电台主持人有声读物录音得胜SM18专业录音麦克风我们在听电台的时候,主播的声音总是那么好听,或慵懒或温暖或铿锵有力,字正腔圆,一字一句如颗颗玉珠落入玉盘,声音清脆圆润饱满,听着电台流淌出的声音,就是一种享受,让人全身心的放松下来冰箱细菌繁生度堪比马桶?做好清洁不存在的又到了换季的时候,这种季节是肠胃感冒的高发期,所以许多宝宝们都会选择在换季的时候清理冰箱,避免冰箱内食材变质引起细菌感染,但通常我们只是把过期食材都扔掉,再擦拭一遍冰箱就结束了,这早期创业的阿里巴巴那段偷Offer的日子对于早期创业中的阿里巴巴来说,一个供求信息背后,都是一个客户,都是一个愿望。即便是加班到凌晨三四点,又冷又饿,阿里人心中的信念依旧。作者凌姝说那种又臭又暖的感觉,现在想起来还是甜滋20M的电信宽带和移动或联通的200M宽带相比,使用体验的差距真的很大吗?南电信北联通,但是移动免费送宽带,这句话还是蛮有道理的,但是免费送的东西用起来究竟怎么样,20M的电信宽带和移动的200M的宽带相比,在使用体验上有差距吗?那么下面给大家说一说。电弹丸小国日本,凭什么号称科技强国?5大尖端技术不容小视弹丸小国日本,虽然领土面积只有我国的125,俄罗斯的140,但是与日本体量完全相反的,却是它让很多大国都望尘莫及的尖端科技,是名副其实的的科技大国。1。半导体材料日本的半导体材料行猪队友竟是我自己?ColorOS12日期曝光近日有网友询问OPPO的语音助手BreenoColorOS什么时候发布?小布回答道新系统将于9月13日下午3点发布。随后官方紧急修复了这个漏洞,现在再询问,小布也只会回答即将揭晓,赵薇被封杀,这一互联网医美平台也受牵连,医美赛道如何扛着双刃剑飞舞?星标IPO日报精彩文章第一时间推送8月27日一大早,娱乐圈就再添大瓜。小燕子赵薇微博超话被关闭,主演的多部作品已经将她除名,甚至有消息传出,赵薇被列为劣迹艺人,将被封杀。一时间,吃RFID助推运营商IDC机房资产管理智能化电信运营商IDC机房分布广,服务器权属较多,对IDC机房服务器进行自动盘点位置追踪较为困难。通过RFID技术来替代原有的人工记录,实现数据采集的自动化,结合后台计算机数据库,大大提