密码学基础

  • 分类
    • 对称加密
    • 非对称加密
    • 两类加密的特点
    • 结合使用
  • 举例
    • 凯撒密码
    • 代码实现-加密
    • 代码实现-解密
    • 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. 加解密基础——(对称加密、非对称加密和混合加密)

    本文对之前学习过的加解密相关知识做一简单总结,以备后用. 1. 基本概念 加密算法 通常是复杂的数学公式,这些公式确定如何将明文转化为密文的过程和规则. 密钥 是一串被加入到算法中的随机比特. 待续 ...

  2. 密码学--对称加密和非对称加密联合使用

    对称加密与非对称加密联合使用 生成数字信封 明文经过哈希之后,再使用自己的私钥进行签名,生成数字签名 明文和数字签名还有公钥(或者数字证书)对这些数据使用对称加密算法加密生成密文. 对使用的对称加密密 ...

  3. 网络安全-对称加密和非对称加密基础

    加密算法分为对称加密和非对称加密,其中对称加密算法的加密与解密秘钥相同,非对称加密算法的加密秘钥与解密秘钥不同,此外,还有一类不需要秘钥的散列算法. 常见的对称加密算法主要有DES.3DES.AES等 ...

  4. JackHttp -- 浅谈编码、加密(对称加密,非对称加密,Hash算法)

    如果你还不清楚 JackHttp 是什么,请戳这里!!! JackHttp 是一个网络框架系列,为什么还要分享编码和加密呢?主要有如下几个原因: HTTP 在网络传输过程中是明文的. HTTP 在网络 ...

  5. 对称加密与非对称加密,以及RSA的原理

    一 , 概述 在现代密码学诞生以前,就已经有很多的加密方法了.例如,最古老的斯巴达加密棒,广泛应用于公元前7世纪的古希腊.16世纪意大利数学家卡尔达诺发明的栅格密码,基于单表代换的凯撒密码.猪圈密码, ...

  6. 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS

    一,对称加密 所谓对称加密,就是它们在编码时使用的密钥e和解码时一样d(e=d),我们就将其统称为密钥k. 对称加解密的过程如下: 发送端和接收端首先要共享相同的密钥k(即通信前双方都需要知道对应的密 ...

  7. 对称加密和非对称加密介绍和区别

    什么是对称加密技术? 对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥,即加密密钥也可以用作解密密钥,这种方法在密码学中叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短, ...

  8. mysql对称连接什么意思_对称加密与非对称加密的区别是什么

    区别:1.对称加密中加密和解密使用的秘钥是同一个:非对称加密中采用两个密钥,一般使用公钥进行加密,私钥进行解密.2.对称加密解密的速度比较快,非对称加密和解密花费的时间长.速度相对较慢.3.对称加密的 ...

  9. 对称加密、非对称加密深度解析

    密码学的发展 加密的发展史随着人类的进化逐步复杂.严谨也更安全,对于早期的移位和字母对应等加密方式我们不难理解. 移位 : 比如恺撒密码, 简单点说将 26个英文字母的顺序打乱,得到一个新的字母顺序, ...

  10. 网络协议从入门到底层原理(7)网络安全 - 常见攻击、单向散列函数、对称加密、非对称加密、混合密码系统、数字签名、证书

    网络安全 网络层 - ARP欺骗 DoS.DDoS 介绍与防御 传输层 - SYN洪水攻击(SYN flooding attack) 传输层 - LAND攻击 应用层 - DNS劫持.HTTP劫持 H ...

最新文章

  1. Jsoup:使用Java将爬虫得到的数据写入Excel,Jsoup得到的数据进行持久化,爬虫数据保存到本地Excel中
  2. 用css来设置table的border
  3. 【PAT乙级】1069 微博转发抽奖 (20 分)
  4. Distance 几何,构造(800)
  5. pymysql连接mysql_python使用MYSQL数据库
  6. PHP__call __callStatic
  7. 嵌入式 linux 启动脚本 编写,[9构建嵌入式linux系统项目-启动脚本的编写.ppt
  8. linux下编译httpd,Linux下编译安装Apache httpd 2.4
  9. 设计微服务架构需要解决的问题
  10. Ubuntu13下调试USB AUDIO的一些记录
  11. Visual Studio 中常用的快捷键
  12. 2021回顾 | AI 领域十大研究趋势及必读论文
  13. 光伏发电最大功率点跟踪 (mppt) matlab/simulink仿真程序 恒定电压法 扰动观察法(po) 电导增量法(inc)模糊控制法(fuzzy)多种方法
  14. 证明矩阵的秩=行秩=列秩
  15. 袖珍计算机英语手册,英语袖珍迷你系列-中考英语速记手册.pdf
  16. 数据结构中confusing的地方整理
  17. 香港特首到访阿里_她是来看几个年轻人的……
  18. Visual Studio Code(VSCode)中文包
  19. 使用IText画复杂布局的页面
  20. 【Linux】vim文本编辑器的使用

热门文章

  1. 客户端交互设计适配之——屏幕大小
  2. 最强android平板,三星发布会汇总:除了“一言难尽”的Note20系列与最强Android平板...
  3. upload组件多个文件上传、自定义文件列表显示及手动上传
  4. 豆瓣,你的前端开发有点幽默了
  5. 【SLAM】SLAM环境配置 Win10+VS2019+OpenCV+PCL+g2o+Vcpkg
  6. mysql数据库增删改查关键字_MySQL数据库(二)-数据库的增删改查
  7. Mac复制word内容后会出现小框框标记,怎么也取消不掉
  8. win10使用Inception v3进行图像分类TensorFlow学习记录
  9. 超高频工业rfid读头对比高频读头有哪些优势?
  10. 小火山视频-有趣有料有亮点的视频