密码学基础(对称加密和非对称加密)
密码学基础
- 分类
- 对称加密
- 非对称加密
- 两类加密的特点
- 结合使用
- 举例
- 凯撒密码
- 代码实现-加密
- 代码实现-解密
- main函数及文件加密
分类
一般分为:
- 对称加密
- 非对称加密
对称加密
加密和解密使用的是同一个密钥或者,两者可以互相推导得出,则认为是对称加密,如DES,AES,3DES
在传输数据时用密钥将数据加密,然后将密文发给接收方,接收方再使用该密钥解密数据。这样就要求接收方需要知道密钥,如果接收方需要接受1万个用户的数据的话就需要知道1万个密钥,并且密钥容易泄漏。
非对称加密
加密和解密的密钥不同,且知道其中一个密钥不能得知另一个密钥,一般用来加密的密钥称作公钥,用来解密的密钥称作私钥,如RSA,ECC
在需要传输数据给某用户时,就使用该用户的公钥对数据加密得到密文发给用户,用户用自己的私钥来解密密文得到数据 。
两类加密的特点
- 对称加密安全性差,但是效率高
- 非对称加密安全性好,但是加密效率低
结合使用
在传输一个比较大的数据时,可以先用对称加密来加密数据,对称加密的密钥假如为X,再用非对称加密将X加密。
举例
凯撒密码
凯撒密码是对称密码,其密钥是0-26的一个整数key,加密是将每个字母往后推移key个字母
比如密钥为3,明文为a,则密文就是d
代码实现-加密
//加密public static String encryption(String txt,int key){if (key<0||key>26)return null;char[] result=txt.toCharArray();int intA=65;int inta=97;for (int i=0;i<result.length;i++){if (result[i]>'A'&&result[i]<'Z') {result[i] =(char)(((int)result[i]+key-intA)%26+intA);}else if (result[i]>'a'&&result[i]<'z'){result[i] =(char)(((int)result[i]+key-inta)%26+inta);}else;}return new String(result);}
代码实现-解密
//解密,调用加密的函数public static String decrypting(String txt,int key){if (key<0||key>26)return null;return encryption(txt,26-key);}
main函数及文件加密
public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int choose=0;System.out.println("加密输入1,解密输入2:");choose=scanner.nextInt();if (choose==1){System.out.println("输入密钥(0-26):");int key=scanner.nextInt();String pathname="/new/IdeaProjects/StudyTest/test.txt";String oriText=getFileText(pathname);String ciphertext=encryption(oriText,key);System.out.println(pathname+"加密完成!");System.out.println("使用密钥:"+key+"加密后得到密文为:");System.out.println(ciphertext);String pathname2="/new/IdeaProjects/StudyTest/ciphertext.txt";if (printToFile(ciphertext,pathname2)){System.out.println("密文保存在:"+pathname2);return;}else {System.out.println("密文保存失败!");return;}}else if (choose==2){System.out.println("输入密钥(0-26):");int key=scanner.nextInt();String pathname2="/new/IdeaProjects/StudyTest/ciphertext.txt";String cipherText=getFileText(pathname2);String oriText=decrypting(cipherText,key);System.out.println("使用密钥:"+key+"解密完成,明文为:");System.out.println(oriText);}else {return;}}//读文件public static String getFileText(String pathname){File file=new File(pathname);String str="";try {Scanner scanner = new Scanner(file);while(scanner.hasNext()){str=str+" "+scanner.next();}scanner.close();} catch (FileNotFoundException e) {System.out.println("file not found.");}return str;}//写文件public static boolean printToFile(String str,String pathname){File file = new File(pathname);// 要写入的文件路径if (!file.exists()) {// 判断文件是否存在try {file.createNewFile();// 如果文件不存在创建文件System.out.println("文件"+file.getName()+"已为您创建!");} catch (IOException e) {System.out.println("创建文件异常!");e.printStackTrace();return false;}} else {System.out.println("文件"+file.getName()+"已存在!");}FileOutputStream fos = null;PrintStream ps = null;try {fos = new FileOutputStream(file,true);// 文件输出流 追加ps = new PrintStream(fos);} catch (FileNotFoundException e) {e.printStackTrace();}String string = str + "\r\n";// +换行ps.print(string); // 执行写操作ps.close(); // 关闭流return true;}
密码学基础(对称加密和非对称加密)相关推荐
- 加解密基础——(对称加密、非对称加密和混合加密)
本文对之前学习过的加解密相关知识做一简单总结,以备后用. 1. 基本概念 加密算法 通常是复杂的数学公式,这些公式确定如何将明文转化为密文的过程和规则. 密钥 是一串被加入到算法中的随机比特. 待续 ...
- 密码学--对称加密和非对称加密联合使用
对称加密与非对称加密联合使用 生成数字信封 明文经过哈希之后,再使用自己的私钥进行签名,生成数字签名 明文和数字签名还有公钥(或者数字证书)对这些数据使用对称加密算法加密生成密文. 对使用的对称加密密 ...
- 网络安全-对称加密和非对称加密基础
加密算法分为对称加密和非对称加密,其中对称加密算法的加密与解密秘钥相同,非对称加密算法的加密秘钥与解密秘钥不同,此外,还有一类不需要秘钥的散列算法. 常见的对称加密算法主要有DES.3DES.AES等 ...
- JackHttp -- 浅谈编码、加密(对称加密,非对称加密,Hash算法)
如果你还不清楚 JackHttp 是什么,请戳这里!!! JackHttp 是一个网络框架系列,为什么还要分享编码和加密呢?主要有如下几个原因: HTTP 在网络传输过程中是明文的. HTTP 在网络 ...
- 对称加密与非对称加密,以及RSA的原理
一 , 概述 在现代密码学诞生以前,就已经有很多的加密方法了.例如,最古老的斯巴达加密棒,广泛应用于公元前7世纪的古希腊.16世纪意大利数学家卡尔达诺发明的栅格密码,基于单表代换的凯撒密码.猪圈密码, ...
- 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS
一,对称加密 所谓对称加密,就是它们在编码时使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k. 对称加解密的过程如下: 发送端和接收端首先要共享相同的密钥k(即通信前双方都需要知道对应的密 ...
- 对称加密和非对称加密介绍和区别
什么是对称加密技术? 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短, ...
- mysql对称连接什么意思_对称加密与非对称加密的区别是什么
区别:1.对称加密中加密和解密使用的秘钥是同一个:非对称加密中采用两个密钥,一般使用公钥进行加密,私钥进行解密.2.对称加密解密的速度比较快,非对称加密和解密花费的时间长.速度相对较慢.3.对称加密的 ...
- 对称加密、非对称加密深度解析
密码学的发展 加密的发展史随着人类的进化逐步复杂.严谨也更安全,对于早期的移位和字母对应等加密方式我们不难理解. 移位 : 比如恺撒密码, 简单点说将 26个英文字母的顺序打乱,得到一个新的字母顺序, ...
- 网络协议从入门到底层原理(7)网络安全 - 常见攻击、单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书
网络安全 网络层 - ARP欺骗 DoS.DDoS 介绍与防御 传输层 - SYN洪水攻击(SYN flooding attack) 传输层 - LAND攻击 应用层 - DNS劫持.HTTP劫持 H ...
最新文章
- Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中
- 用css来设置table的border
- 【PAT乙级】1069 微博转发抽奖 (20 分)
- Distance 几何,构造(800)
- pymysql连接mysql_python使用MYSQL数据库
- PHP__call __callStatic
- 嵌入式 linux 启动脚本 编写,[9构建嵌入式linux系统项目-启动脚本的编写.ppt
- linux下编译httpd,Linux下编译安装Apache httpd 2.4
- 设计微服务架构需要解决的问题
- Ubuntu13下调试USB AUDIO的一些记录
- Visual Studio 中常用的快捷键
- 2021回顾 | AI 领域十大研究趋势及必读论文
- 光伏发电最大功率点跟踪 (mppt) matlab/simulink仿真程序 恒定电压法 扰动观察法(po) 电导增量法(inc)模糊控制法(fuzzy)多种方法
- 证明矩阵的秩=行秩=列秩
- 袖珍计算机英语手册,英语袖珍迷你系列-中考英语速记手册.pdf
- 数据结构中confusing的地方整理
- 香港特首到访阿里_她是来看几个年轻人的……
- Visual Studio Code(VSCode)中文包
- 使用IText画复杂布局的页面
- 【Linux】vim文本编辑器的使用
热门文章
- 客户端交互设计适配之——屏幕大小
- 最强android平板,三星发布会汇总:除了“一言难尽”的Note20系列与最强Android平板...
- upload组件多个文件上传、自定义文件列表显示及手动上传
- 豆瓣,你的前端开发有点幽默了
- 【SLAM】SLAM环境配置 Win10+VS2019+OpenCV+PCL+g2o+Vcpkg
- mysql数据库增删改查关键字_MySQL数据库(二)-数据库的增删改查
- Mac复制word内容后会出现小框框标记,怎么也取消不掉
- win10使用Inception v3进行图像分类TensorFlow学习记录
- 超高频工业rfid读头对比高频读头有哪些优势?
- 小火山视频-有趣有料有亮点的视频