1.常用加密算法

有对称密码,公钥密码,单向散列函数,数字签名, 伪随机数生成器。

明文:是指没有加密的文字(或者字符串),加密之前的文字。

密文:加了密的的文字。

MDS算法 :单向散列函数                                                             SHA算法: 单向散列函数,秒传。

base64编码与解码:64个符号进行编码,多媒体信息追加到文本中。

64个符号:a到z,A到Z,0到9,- +或者/

对称密码

(最古老的)凯撒密码:通过偏移来实现,比如偏移n位数 n=1 (hello就是ifmmp)。

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.util.Arrays;

/**

* 工具类

* @author Admin

*

*/

public class Util {

/**

* 凯撒密码加密

* @param msg 明文

* @return 密文

*/

public static String toCaesar(String msg) {

//字符串转换成字符数组

char[] data =msg.toCharArray();

//Arrays

System.out.println(Arrays.toString(data));

//偏移(加密):把明文转换为密文

//每个字符偏移特定的位置:如love

//l,o,v,e

for (int i = 0; i < data.length; i++) {

//对每个字符进行处理,偏移 1

//char c = data[i];

//不是z的情况,才进行处理,标点符号除外

if((data[i] >='a' && data[i]

|| (data[i] >='A' && data[i]

) {

data[i]++;

}

//z?如何偏移

if(data[i]=='z') {

data[i]='a';

}

if(data[i]=='Z') {

data[i]='A';

}

//todo,如果偏移是其他的值

}

//返回密文

return new String(data);

}

}

package com.newer.demo;

public class App {

public static void main(String[] args) {

//a后面是b,中后面?

//中文 在UTF-8是 多个字节

//String msg=" i love u - zoom ? ZOOM";

//

//String msgCaesar= Util.toCaesar(msg);

//

//System.out.println(msgCaesar);

}

}

控制台输出结果为:

[ , i, , l, o, v, e, , u, , -, , z, o, o, m, , ?, , Z, O, O, M]

j mpwf v - appn ? APPN

公钥密码(非对称 RSA):加密与解密使用两个不同的密钥。

https:使用混合加密方式。

单向散列函数:不能解密。

确保数据的完整性,存储用户口令。

散列函数把输入的内容(长度不限),生成固定长度的内容,消息摘要,指纹。

md5

sha128

sha256

sha512

比特币是散列算法。区块的摘要信息

package com.newer.demo;

import java.math.BigInteger;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.util.Arrays;

/**

* 工具类

* @author Admin

*

*/

public class Util {

/**

* 单向散列函数,生成摘要信息(数字指纹),过程不可逆(无法解密

* @param text 目标数据:字符串,字节数组,文件

* @return

*/

public static String toMD5(String text){

//消息摘要

try {

byte[] data=MessageDigest.getInstance("MD5").digest(text.getBytes());

//字节数组转换成16进制数

return new BigInteger(1,data).toString(16);

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

return null;

}

/**

*

* @param text

* @return

*/

public static String toSha256(String text){

//消息摘要

try {

byte[] data=MessageDigest.getInstance("SHA").digest(text.getBytes());

//字节数组转换成16进制数

return new BigInteger(1,data).toString(16);

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}

return null;

}

}

package com.newer.demo;

public class App {

public static void main(String[] args) {

//MD5---->32

System.out.println(Util.toMD5(""));

System.out.println(Util.toMD5("love"));

System.out.println(Util.toMD5("i love you"));

System.out.println(Util.toMD5("这是一段文本内容...很长,很长...."));

// SHA256--->64

System.out.println(Util.toSha256(""));

System.out.println(Util.toSha256("love"));

System.out.println(Util.toSha256(" I love you"));

System.out.println(Util.toSha256("这是一段文本内容...很长,很长...."));

}

}

控制台输出结果为:

d41d8cd98f00b204e9800998ecf8427e

b5c0b187fe309af0f4d35982fd961d7e

459b9511a7f650ebd327889c45cc4e9b

6801cad5e0c2a026f3d562c2b4ea13cd

da39a3ee5e6b4b0d3255bfef95601890afd80709

9f2feb0f1ef425b292f2f94bc8482494df430413

f6de392817cbb574fa480f63fefc0b85f2f63c93

6c8ba80d95708c301b6228b2258eebc895bb9810

用Java写给女朋友,用加密算法给女朋友写封情书相关推荐

  1. Java中4大基本加密算法解析

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一, 大家可以查看RFC2045- RFC2049, 上面有MIME的详细规范. 简单的java加密算法有: BASE64 严格地说, ...

  2. 七夕到了!不会写代码?一样可以给女朋友建个网站

    不会写代码也可以给女朋友建个网站 分三个模块 百度aipage/rp/模板 七夕建站 教程视频 使用别人的模板 部署 修改代码(可选) 部署至腾讯云对象存储 部署至uniCloud服务空间 使用百度A ...

  3. 写java线程导致电脑内存不足_如何写出让java虚拟机发生内存溢出异常OutOfMemoryError的代码...

    程序小白在写代码的过程中,经常会不经意间写出发生内存溢出异常的代码.很多时候这类异常如何产生的都傻傻弄不清楚,如果能故意写出让jvm发生内存溢出的代码,有时候看来也并非一件容易的事.最近通过学习< ...

  4. java面试题25 在程序代码中写的注释太多,会使编译后的程序尺寸变大。

    java面试题25 在程序代码中写的注释太多,会使编译后的程序尺寸变大. A:正确 B:错误 蒙蔽树上蒙蔽果,蒙蔽树下你和我 拿到这道题,我觉得说的贼有道理,注释太多,尺寸变大.无疑与就和驾考 一样, ...

  5. [java基础] --- java开发,service层是不是一定要写接口

    估计很多java开发的同学都遇到过,service层要写一个接口,然后再写接口的实现类,但这个接口从项目开始到项目倒闭,都不会有第二个实现,那为什么不直接写个service类呢?如果你还没想过这个问题 ...

  6. java校验参数防止攻击_程序员写接口参数校验,总是太多if else?一招让你避免体力活...

    对于写Java的程序员来说,不管是写单纯的接口.还是页面后台一把梭,后端参数校验的功能都是整个代码不可或缺的一部分,它可以从系统入口过滤掉一些不合法的数据,以确保我们的系统稳定. 还记得我刚入行Jav ...

  7. Java 加密解密之对称加密算法PBE

    JAVA  加密解密系列 Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64加密解密 Java 加密解密之消息摘要算法(MD5 SHA MAC) Java 加密 ...

  8. Java中使用字符流读取UTF-8和写出txt文件 乱码 问题

    乱码问题一直都是非常难受的问题,本文解决Java中使用字符流读取UTF-8和写出txt文件 乱码 话不多说,直接上图 输出结果: 使用代码: 解决:

  9. java程序设计实验报告代写_代写file I/O作业、代写java Scanner I/O程序、代写java编程作业、代做java实验报告...

    代写file I/O作业.代写java Scanner I/O程序.代写java编程作业.代做java实验报告 日期:2018-09-05 03:40 ?Objectives oCreate a pr ...

最新文章

  1. curl命令具体解释
  2. 在VB 中调用动态连接库
  3. 关于编辑器对input标签报错提示“表单输入没有相关label”的问题
  4. java list 排序_java list排序
  5. 如何在 C# 中使用只读的 Collections
  6. C#委托实现C++ Dll中的回调函数
  7. 2020年这个副业,能让你彻底告别死工资,你敢试吗?
  8. 如何填充自画形状_AI中如何用形状填充
  9. 游戏UI设计(2.1)--窗口之父CXWnd的封装
  10. C++冒泡排序(初级版)
  11. 数据链路层的差错控制ARQ
  12. python剑指offer剪绳子
  13. IBatis .NET 开发学习笔记——简要介绍
  14. 机器翻译市场需求调研报告
  15. 生成对抗网络理论模型和应用综述
  16. 塔防类游戏实现(一)
  17. 经典蓝牙inquiry与inquiry scan
  18. 东北大学《传输原理》随堂练习
  19. 天龙八部手游服务器维护公告,天龙八部手游 近期更新维护公告
  20. Android各版本对应Android API(知识累积)

热门文章

  1. 类文件解析003-解析常量池
  2. 开放式基金全景点评:净值全面攀升 关注老基金(ZZ)
  3. 单片机1602音乐播放器
  4. 域名升级访问中拿笔记好_域名选择与老域名质量评分,尽量少踩坑
  5. MobileNetv2-SSDLite训练自己的数据集
  6. Android 11.0 系统Settings app详情页增加统计使用时长功能
  7. Linux多定时器的实现之一
  8. 敏捷迭代管理 --工时估算(估点)
  9. 约数定理(约数个数定理,约束和定理)
  10. cocos 设置canvas透明导致 正常节点透明度设置效果异常