5分钟讲清楚常用加密算法_全球独家
为什么要加密?
当然是为了保密。
(资料图片)
最早的密码应用,都伴随着阴谋与战争。
中国古代的“阴符”、“阴书”就是其中的代表。
到了近代,二战最著名的一个故事,就是纳粹德国的Enigma密码机
以及图灵和他发明的密码破解机。
可以说,现代战争中,信息安全极其重要
如果你的部署、命令都被对手知道
你收到的指令都是对手伪造的
这还怎么打?
在当下,加密数据和密码的应用,
从军事,到商业领域,以及科学界
乃至每个人普通的生活
如果没有数据加密,每个人的信息都是透明的
想想可怕的电话诈骗,你还觉得自己的信息安全吗?
有一句话说的是:
大数据时代,没有秘密
加密方式
最常见的计算机加密方式有三种:
对称、非对称、摘要
对称的意思是:
我有一个秘钥K,能把原文 A 加密成 A1,还能把 A1 还原成 Af(A, K) =A1f(A1, K) =A对称加密用途最为广泛,
操作简单,速度快,
适合场合多样
但缺点很明显,秘钥K太关键了
如果你需要让密文被其他授信的人访问
必须给他发秘钥
但问题是,
只要得到秘钥,就能破解一切,包括非法用户
非对称安全性稍微高一点
有2个秘钥,一般是成对的公钥和私钥
通常是用公钥加密,私钥解密
这种情况下,解决了对称加密的发送秘钥问题
现在公钥是公开的,私钥只有我自己有
永远不发送,就不会泄密
摘要加密一般采用的是hash算法,
只加密不解密,
适合于只验证对不对,而不验证是什么。
举个朴素例子:
二中的学生,学号格式是 L220130103 格式
三中的学生,学号格式是 PLE821 格式
现在我要验证这个人是哪个学校的,
其实无需关注具体内容,
简单判断一下长度就可以了
当然真正的算法没这么简单
下面具体来谈
便于大家统一理解
我们建一个项目
统一使用hutool工具包
cn.hutool hutool-all 5.8.5 对称加密
最简单的是des方法
他使用一个简单的秘钥,就可以实现加密和解密
我们写一个junit的test,或者写一个main也可以
class Test1 {@Testvoid test() {String text0 = "这是原文";String key = "xiaomian";DES des = new DES(key.getBytes());String text1=des.encryptBase64(text0);System.out.println(text1);}}运行结果是 +iJWs7q8+dyiRBouA8lDBA==
我们使用秘钥 “xiaomian”,
把“这是原文”,加密成了一个看不懂的字符串
然后开始解密
class Test1 {@Testvoid test() {String key = "xiaomian";DES des = new DES(key.getBytes());String text2=des.decryptStr("+iJWs7q8+dyiRBouA8lDBA==");System.out.println(text2);}}运行结果是 这是原文
还是同一个key,
用相反的方法,把原文解出来了
操作非常简单。
des就是一个最简单的对称加解密方法
类似的还有aes算法
可以使用hutool工具包,
操作差不多
非对称加密
使用非对称的主要原因
就是 安全、安全、还是安全
非对称在性能方面和对称没的比
因此,建议非对称使用短数据场合
而长数据使用对称实现。
最常用的是RSA算法
首先要生成一对秘钥,这个就没法人工创造了
我们可以借助工具
class Test2 {@Testvoid test() { KeyPair pair = SecureUtil.generateKeyPair("RSA"); String privateKey = Base64.encode(pair.getPrivate().getEncoded()); System.out.println("privateKey:" + privateKey); String publicKey = Base64.encode(pair.getPublic().getEncoded()); System.out.println("publicKey:" + publicKey);}}输出结果为:
privateKey:MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALBgrUOQySQB72VrGyijYZcaNM26t49oaKlNddu4SLpEdJzpUnVjXtIi9Nj/DkFBXgSB9FYdrv7MpQWzTmLw0do6pcfo2cekmBGPnFRdChtEf8Npq0pAV2LlNahwkB8fxZcbQYaaWBuBkx7aHT09JGsEpi9P3y7ae4vwYmFlWgEHAgMBAAECgYBVBnXgEWb1Zb1rLaPNBl3gQrDb0Dv29QUnQIElZ4QfzypMDipDDqFCObnA9cuAZ6uUDrWj4fFfQXX39oU+KwtuESddT9rJw1hPSy2i5ityEyYO5OZQRJaTVWPWzpph+bqFLkngaOvlr3OBG7YtywUL0P8toz2pOQKpoQOkffetuQJBAP26GKiOcs/sKhrzuM/t0S2ERXXDcu07jWxJ8gioQBuQaM7AA14tbiRzaZm3Xt+cGPjHJUGEJpDvGLQ9MavEZDMCQQCx9S+JevTGpxHMX/R3uUawlTsks1keyd0rqBtqQQx7V9Bm8htrlVU3QbhacFd/FJodWX7mGOAO6nLVGK/5qXvdAkB13zSBadvwuDg/WSZsgoEA8kgKk4gaqeXjft7QIsnVhFsMYauu3tAiYvOWE9ghbbU0LeAi9a+s+UayxRMERzJ9AkA5Y7fL32I2+kQMI9nEDnUUl1u2bzxLaJAx9wm4T3gGAwDLYkKjhEoyArjAOcCN1AgLdQQuklEXnlYgENEXc6flAkEAwDbTBfOtuP/6S5nU0gX9D5fYlF/fz4YTfBjHC2dZ/wrmWlJA0f7QFf5DysQB9AXJX6ZWL/3LkMtHPafqBMKpJw==publicKey:MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwYK1DkMkkAe9laxsoo2GXGjTNurePaGipTXXbuEi6RHSc6VJ1Y17SIvTY/w5BQV4EgfRWHa7+zKUFs05i8NHaOqXH6NnHpJgRj5xUXQobRH/DaatKQFdi5TWocJAfH8WXG0GGmlgbgZMe2h09PSRrBKYvT98u2nuL8GJhZVoBBwIDAQAB看吧,鬼也看不懂
不过能用就行
接下来,开始使用秘钥对,进行加密和解密
class Test2 {static String privateKey;static String publicKey;@BeforeAllstatic void createKey() { KeyPair pair = SecureUtil.generateKeyPair("RSA"); privateKey = Base64.encode(pair.getPrivate().getEncoded()); System.out.println("privateKey:" + privateKey); publicKey = Base64.encode(pair.getPublic().getEncoded()); System.out.println("publicKey:" + publicKey);}@Testvoid test() {String text = "这是原文";RSA rsa = new RSA(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue(), privateKey, publicKey); String text1 = rsa.encryptBase64(text, KeyType.PublicKey); System.out.println("公钥加密: " + text1); String text2 = rsa.decryptStr(text1, KeyType.PrivateKey); System.out.println("私钥解密: " + text2);}}输出结果为:
公钥加密: KSifTf6tS6LGlBT9LJC33VXzkXtaQEIGJcpf1BU2ptzRXTtBzvjx83EffCqntD7/M7ZciTr4MIBFBPFCxLs9NVEeC4K9/B8fQE/3hdsMzWBTnKQzQR2vd1i5mOgFaHYwTLwrq9Dbkv1YGluCb004YtLEqdjSO/Oljs7x2YVtvGc=私钥解密: 这是原文也可以反过来用
@Testvoid test() {String text = "这是原文";RSA rsa = new RSA(AsymmetricAlgorithm.RSA_ECB_PKCS1.getValue(), privateKey, publicKey); String text1 = rsa.encryptBase64(text, KeyType.PrivateKey); System.out.println("私钥加密: " + text1); String text2 = rsa.decryptStr(text1, KeyType.PublicKey); System.out.println("公钥解密: " + text2);}私钥加密: Ty5YGXHUajKHtlmQ7yGYJtc39Rjb3IvSIm7WWg4+Ge6u8MDeJ3TLYZokgBbAMZRcZBZ8bIWiou12+KxoW8moRwke4PlWVipgwhC2l6qo7WtTMiwnGh+0+B8wnY3OySFK4ZeOMQFgYuiTL2uZqofLXyNzwID7GKCfWI6EL29wtbE=公钥解密: 这是原文对称算法的特点就是
随便先用谁,然后用另一个解
一般来说,有意义的信息,加密传递
建议使用 公钥加密,私钥解密
这种方法,确保信息只能由你指定的对象收到
另一种反过来的做法,
私钥加密,公钥解密
用于数字签名场合
证明这个签名是某人做的
因为只有他有他自己的私钥
摘要加密
摘要加密是单向的
能加不能解
主要目的是生成特征码
常用算法包括 md5,sha 等等
class Test3 {@Testvoid test() {String text = "这是原文";String text1 = DigestUtil.md5Hex(text); System.out.println(text1);}}输出结果是:
531ffeed49bb13a6cf93049cc1e5ee53比如系统密码,一般采用摘要加密
假设我的密码是 123456,
md5之后变成了 e10adc3949ba59abbe56e057f20f883e
如果有人能看到数据库表,
哪怕他找到了我的密码 e10adc3949ba59abbe56e057f20f883e,
也不知道我实际的密码是123456
当登陆时,会对用户输入的密码再次md5,
如果结果还等于e10adc3949ba59abbe56e057f20f883e,
就表示输对了密码。
摘要加密的特点是
输出结果位数是固定的
比如上面列出的md5,加密后永远是固定长度
他的特点主要是:
输入不同,加密结果就不同输入相同,加密结果一定相同现在一般md5用的也少,主要是长度和复杂度
一般使用 sha256 或 sha512
他可以做简化验证
比如,我有一个文档,大小为 100M
如何验证他的内容发生串改
我们不可能拿2个100M的文件,逐个字节比较
这时,只要对2者分别做摘要运算,
得到一个短的字符串,对他们比较就可以了
这种验证的特点是:我知道你对和不对,但我不知道哪错了
总结
三种方法中,一般使用原则是
速度快,用对称安全高/数据少,用非对称用于验证对错,保留特征码,用摘要大家可以试试,顺便安利一下hutool,
非常优秀的工具包
之后我们会专文介绍国密算法
标签:
- 5分钟讲清楚常用加密算法_全球独家
- 每日看点!花甲粉的家常做法和配方
- 天天新资讯:打卡济南公园里的“花花世界”,这份攻略请收好
- “夜鹰”出击查处一起涉气违法行为|速看料
- 世界看热讯:宝宝磨牙是怎么回事呢_宝宝磨牙是怎么回事
- 3月24日基金净值:鹏华优选成长混合A最新净值0.7293,涨0.05%
- 出现鱼尾纹怎么办-观焦点
- 东方碳素北交所过会,被追问抵御成本大幅波动的措施等
- 把思政课开进实验室,上海高校师生“数说”新时代十年发展成就
- 米体:基耶萨伤情检查未受伤但感到不适,将去奥地利接受医生复诊_天天报道
- 百事通!农行潍坊分行用心用情服务 营造“浓情暖域”
- 佳合科技(872392)3月24日游资资金净买入4.13万元
- 春秋战国时期的士有什么品格|精选
- 旅顺口区积极团结凝聚新业态、新就业群体_全球聚看点
- 焦点简讯:干饭是什么网络意思_干饭是什么网络意思
- 从“29—33大萧条”到硅谷银行:银行挤兑到债务危机的传导路径 环球报道
- 广州动物园提醒:请文明游园,勿做“危险动作”
- 摩托超车遇女司机变线,互不相让危险并行,最后直接停路中间互怼
- 市场监管总局下达一批适老化改造国家标准制修订专项计划
- 2022年八月黄道吉日一览表来了
- 世界滚动:希磁科技子公司Sensitec主办XMR磁传感器国际研讨会
- 中方敦促消除对叙利亚人道救援的障碍_世界今亮点
- 展会回暖折射中国经济复苏动力
- 瑞士央行行长:未来数周对瑞银能否成功收购瑞信至关重要 环球快播报
- 【世界速看料】高考中的自主招生是什么意思
- 进博会走进吉林经贸洽谈会在长举办-天天快资讯
- 2023年QS世界大学学科排名出炉 全球热资讯
- 关节病就喝骨头汤 “以形补形”到底靠不靠谱?
- 3月23日华东地区加氢苯市场价格
- 教育部:深化基础学科拔尖人才培养模式改革 重点打造体系化、高水平基础学科人才培养平台
- 环球观焦点:赶“春潮” !本周末郑州地铁适时组织备用列车上线
- 暗警剧情介绍 世界焦点
- 热推荐:创建青年友好型城市 搭建青年企业学习交流平台 石家庄市“青年学名企”活动启动
- 那个自称被外星人带走留下后代的农民,还通过测谎仪,后来怎样? 环球新动态
- 民生银行举办中小微企业客户权益嘉年华活动_天天快看
- 天天动态:江苏一70后厅级干部落马,履历曝光引争议,一细节披露或成隐患
- 今日聚焦!安徒生童话故事大全_格林童话故事大全动画片
- 环球观焦点:中国第二军医大学地址在那里
- 【全球独家】PTT热议BLG横扫iG:IG中野烂货一对宝,难怪之前没人要
- 当前动态:医院资料排查工作总结(精选6篇)
- 全球最资讯丨“90后”姑娘返乡种粮:“创新之犁”耕耘希望的田野
- 2022年有几个情人节 2022情人节送什么最浪漫
- 环球微速讯:镇平县供水服务中心:居民用水无小事 民生服务“零距离”
- 上海阿姨赶在女儿结婚前立遗嘱!99.8%老人选“防儿媳女婿”条款,有用吗?解答
- 考研究生要学士学位吗_为什么要考研究生
- 2023年3月22日山东省硫酸铵价格最新行情预测_最新
- 世界快报:ifound显示器怎么拆卸视频_ifound显示器
- 电动车罚单丢了怎么缴费 当前动态
- vivoS1怎么设置手电筒快捷键
- 环球热点评!爱情魔发师大结局在线观看_爱情魔发师大结局
- 天天实时:欧拉好猫率先优惠2.2万元,比亚迪海豚啥时候会顶不住?
- 微速讯:云南河口吧贴吧_云南河口吧
- 世界视点!ping命令测试网络丢包1500_ping命令测试网络丢包
- 英式葡萄干司康饼_关于英式葡萄干司康饼的简介
- 世界热议:出版传媒:公司原董事长正在接受辽宁省纪委监委审查,目前尚未公布审查结论
- 世界信息:水晶之恋果冻的含义_水晶之恋果冻的含义是什么
- 描写景物的成语30个_描写景物的成语
- 45分钟千万销售额,《永劫无间》正领跑直播带货新赛道-焦点滚动
- 关二爷勇猛无敌,为何只怕甘宁一人?东吴孙权终于说出原因-快播
- 快看点丨2023年3月进口游戏版号发布!《蔚蓝档案》《仙剑客栈2》国行获批
- 全球短讯!大宗交易:佳禾智能成交3054万元,折价8.51%(03-20)
- 弘宇股份(002890.SZ):2名董事、高管减持期过半未减持-环球观天下
- 世界新消息丨储户243万被挪用银行只肯赔一半_这个也可以吗?
- 世界滚动:郑商所:严厉打击市场违法违规行为,有力保障苹果期货稳定运行
- 如何鉴别牛绒衫的真假 牛绒衫的真假怎么辨别
- 聚焦:上海今日阴到多云有小雨 夜间降雨大幕拉开
- 黍离之悲什么意思_黍离之悲
- 环球简讯:Pr软件pr全版本下载 软件下载pr下载2022下载
- 全球讯息:迪卢木多和库丘林_迪卢木多 奥迪那
- 小学除法公式运算法则图表_小学除法公式
- 每股现金流为负是什么意思视频_每股现金流为负是什么意思-世界看点
- 小米杂货铺推出亲民级别沐浴产品,79元售价是要“卷死”同行节奏
- 世界快播:企划部工作职责表(企划部工作职责)
- 一些奇奇怪怪的设定(评论区持续更新)
- 企业裁员银行关闭 美国硅谷进入“凛冬”
- 天天观速讯丨任人大常委感责任重大,李慧琼:会与特区政府“拍住上”
- 太阳的后裔剧情分集介绍电视猫_太阳的后裔剧情分集介绍 环球热点
- 世界观察:arp病毒下载_arp防火墙单机版
- 世界报道:大学本科与大学专科的区别_大学本科跟专科的区别 分别有什么特点
- 《幻塔》2.2版本「镜花月影」前瞻直播爆料分析 环球视讯
- 欧洲央行利率前景不确定性大增
- 今日外汇决策分析:美元失守关键支撑 黄金突破1930阻力|环球即时看
- 如何减少精神内耗
- 重庆扫墓在哪里预约 当前信息
- 世界热文:交易商协会对十堰国资予以诫勉谈话
- 延伸至村屯企业 大连启动常态化安全生产综合检查
- 借物喻人的文章有哪些名家名篇(借物喻人的文章)_当前滚动
- 每日聚焦:中广核电力公布2022年度业绩 全年上网电量超1983亿千瓦时
- 武艺吧官网_武艺吧-全球简讯
- 环球快资讯丨违法约定试用期,要支付赔偿金吗?
- 谁知道正确的煮饺子方法?
- 天天观热点:中国农业银行etc办理_中国农业银行etc
- 天天快报!南华附一医院检验医学中心获批中华检验医学培训工程培训基地
- 每日热点:ChatGPT概念集体拉升,三六零涨近8%
- 塔里木油田迈入九千米级油气勘探开发新阶段
- 工人日报社评丨给那些“换马甲”的劳动侵权行为曝曝光 天天热资讯
- 剑鞘神曲 四大神曲-剑鞘神曲
- 金骏眉茶汤颜色_金骏眉茶|全球热头条
- 王缵绪诗_王瓒绪 环球今热点
- 全球视讯!变价比变脸还快,警惕消费领域的“软伤害”
广告
广告
- 各种花样打“功效宣传”擦边球 消炎止血又美白的牙膏真有效吗?
- 黑龙江讷河新增1例确诊4例无症状 病例详情公布
- 浙江宁波余姚奉化宁海三地开展核酸检测 结果均为阴性
- 浙江湖州南浔三处棋牌室经营者被行拘
- 那年今日 | 一张漫画涨知识之12月13日
- 在宁波乘火车跨省出行须持48小时内核酸阴性证明
- 浙江温州一地发现核酸弱阳性?复采复检结果均为阴性
- 浙江三门发现一名密接者:二次核酸检测结果均为阴性
- 贱卖的发电机 新买的制茶机——安徽水电供区改革两周年回访见闻
- 浙江杭州新增1例新冠肺炎确诊病例 为集中隔离人员
- 2022年研考在即,学硕缩招,专硕时代真的来了?
- 探访杭州核酸检测点:排队高峰多在夜间 医院24小时运转
- 浙江发挥零售药店“哨点”作用 织就疫情防控监测网
- 哈尔滨市本轮疫情首批1名确诊患者出院
- 宁波镇海第三轮全员核酸检测574181人 结果均为阴性
- 陕西新增本土确诊病例1例、境外输入无症状感染者2例
- 齐齐哈尔讷河一地调整为中风险地区
- 浙江新增新冠肺炎确诊病例75例 其中本土74例
- 内蒙古新增本土确诊病例5例 均在呼伦贝尔满洲里市
- 黑龙江无新增确诊病例 新增本土核酸检测初筛阳性人员5例










