用Java写给女朋友,用加密算法给女朋友写封情书
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写给女朋友,用加密算法给女朋友写封情书相关推荐
- Java中4大基本加密算法解析
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一, 大家可以查看RFC2045- RFC2049, 上面有MIME的详细规范. 简单的java加密算法有: BASE64 严格地说, ...
- 七夕到了!不会写代码?一样可以给女朋友建个网站
不会写代码也可以给女朋友建个网站 分三个模块 百度aipage/rp/模板 七夕建站 教程视频 使用别人的模板 部署 修改代码(可选) 部署至腾讯云对象存储 部署至uniCloud服务空间 使用百度A ...
- 写java线程导致电脑内存不足_如何写出让java虚拟机发生内存溢出异常OutOfMemoryError的代码...
程序小白在写代码的过程中,经常会不经意间写出发生内存溢出异常的代码.很多时候这类异常如何产生的都傻傻弄不清楚,如果能故意写出让jvm发生内存溢出的代码,有时候看来也并非一件容易的事.最近通过学习< ...
- java面试题25 在程序代码中写的注释太多,会使编译后的程序尺寸变大。
java面试题25 在程序代码中写的注释太多,会使编译后的程序尺寸变大. A:正确 B:错误 蒙蔽树上蒙蔽果,蒙蔽树下你和我 拿到这道题,我觉得说的贼有道理,注释太多,尺寸变大.无疑与就和驾考 一样, ...
- [java基础] --- java开发,service层是不是一定要写接口
估计很多java开发的同学都遇到过,service层要写一个接口,然后再写接口的实现类,但这个接口从项目开始到项目倒闭,都不会有第二个实现,那为什么不直接写个service类呢?如果你还没想过这个问题 ...
- java校验参数防止攻击_程序员写接口参数校验,总是太多if else?一招让你避免体力活...
对于写Java的程序员来说,不管是写单纯的接口.还是页面后台一把梭,后端参数校验的功能都是整个代码不可或缺的一部分,它可以从系统入口过滤掉一些不合法的数据,以确保我们的系统稳定. 还记得我刚入行Jav ...
- Java 加密解密之对称加密算法PBE
JAVA 加密解密系列 Java 加密解密基础 Java byte数组与十六进制字符串互转 Java BASE64加密解密 Java 加密解密之消息摘要算法(MD5 SHA MAC) Java 加密 ...
- Java中使用字符流读取UTF-8和写出txt文件 乱码 问题
乱码问题一直都是非常难受的问题,本文解决Java中使用字符流读取UTF-8和写出txt文件 乱码 话不多说,直接上图 输出结果: 使用代码: 解决:
- 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 ...
最新文章
- curl命令具体解释
- 在VB 中调用动态连接库
- 关于编辑器对input标签报错提示“表单输入没有相关label”的问题
- java list 排序_java list排序
- 如何在 C# 中使用只读的 Collections
- C#委托实现C++ Dll中的回调函数
- 2020年这个副业,能让你彻底告别死工资,你敢试吗?
- 如何填充自画形状_AI中如何用形状填充
- 游戏UI设计(2.1)--窗口之父CXWnd的封装
- C++冒泡排序(初级版)
- 数据链路层的差错控制ARQ
- python剑指offer剪绳子
- IBatis .NET 开发学习笔记——简要介绍
- 机器翻译市场需求调研报告
- 生成对抗网络理论模型和应用综述
- 塔防类游戏实现(一)
- 经典蓝牙inquiry与inquiry scan
- 东北大学《传输原理》随堂练习
- 天龙八部手游服务器维护公告,天龙八部手游 近期更新维护公告
- Android各版本对应Android API(知识累积)