DCT加密(Java((伪
来源:互联网 发布:搜狗输入法 编程皮肤 编辑:程序博客网 时间:2024/05/29 08:59
</pre>没弄懂原理写个鬼代码啊(摔<p></p><p>还是觉得MATLAB超级不好用....要不是库多hhhhh</p><p>还是去看原理去了(逃</p><p></p><p>这是加密代码</p><p></p><pre name="code" class="java">package wjoker;import java.awt.Color;import java.awt.Rectangle;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Iterator;import javax.imageio.ImageIO;import javax.imageio.ImageReadParam;import javax.imageio.ImageReader;import javax.imageio.stream.ImageInputStream;public class jiami {static String host = "H:\\Workspaces\\MyEclipse 2015 CI\\DCT\\src\\6_1.jpg";static String key = "H:\\Workspaces\\MyEclipse 2015 CI\\DCT\\src\\key.jpg";static String output = "H:\\Workspaces\\MyEclipse 2015 CI\\DCT\\src\\out1.jpg";//static String output2 = "H:\\Workspaces\\MyEclipse 2015 CI\\DCT\\src\\out2.jpg";static String readImageFormat = "jpg";static String writeImageFormat = "jpg";static int a_x = 0;static int a_y = 0;static int b_x = 7;static int b_y = 0;static int weight = 400;static int hight = 560;static int block = 8;static int weight_size = weight/block;static int hight_size = hight/block;public static void main(String[] args) {BufferedImage bi_host = null;BufferedImage bi_key = null;BufferedImage bi_output = null;bi_host = input_img(host, readImageFormat);bi_key = input_img_min(key, readImageFormat);bi_output = bi_host;System.out.println((bi_host == null));System.out.println((bi_output == null));change(bi_host, bi_key, bi_output);output_img(bi_output, writeImageFormat, output);}public static BufferedImage input_img(String input_File,String readImageFormat){FileInputStream fis = null;ImageInputStream iss = null;BufferedImage bi = null;try {fis = new FileInputStream(input_File);Iterator it = ImageIO.getImageReadersByFormatName(readImageFormat);ImageReader reader = (ImageReader) it.next();try {iss = ImageIO.createImageInputStream(fis);reader.setInput(iss,true);ImageReadParam param = reader.getDefaultReadParam();Rectangle rect = new Rectangle(0,0,400,560);param.setSourceRegion(rect);bi = reader.read(0,param);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return bi;}public static BufferedImage input_img_min(String input_File,String readImageFormat){FileInputStream fis = null;ImageInputStream iss = null;BufferedImage bi = null;try {fis = new FileInputStream(input_File);Iterator it = ImageIO.getImageReadersByFormatName(readImageFormat);ImageReader reader = (ImageReader) it.next();try {iss = ImageIO.createImageInputStream(fis);reader.setInput(iss,true);ImageReadParam param = reader.getDefaultReadParam();Rectangle rect = new Rectangle(0,0,100,140);param.setSourceRegion(rect);bi = reader.read(0,param);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return bi;}public static void output_img(BufferedImage bi,String writeImageFormat,String output_File){try {ImageIO.write(bi, writeImageFormat, new File(output_File));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static BufferedImage change(BufferedImage bi_host,BufferedImage bi_key,BufferedImage bi_output){int i,j;int rgb_a,rgb_b,rgb_key;boolean flag;for(i=0;i<weight_size;i++){for(j=0;j<hight_size;j++){rgb_a = getGrey(bi_host.getRGB(i*block+a_x, j*block+a_y));rgb_b = getGrey(bi_host.getRGB(i*block+b_x, j*block+b_y));rgb_key = getGrey(bi_key.getRGB(i, j));if(rgb_a>rgb_b)//key = 0flag = true;else //key = 256flag = false;if(rgb_key > 0){if(flag){int tmp = (rgb_a+rgb_b)/2;rgb_a = tmp-1;rgb_b = tmp+1;}} else {if(!flag){int tmp = (rgb_a+rgb_b)/2;rgb_a = tmp+1;rgb_b = tmp-1;}}bi_output.setRGB(i*block+a_x, j*block+a_y, new Color(rgb_a,rgb_a,rgb_a).getRGB());bi_output.setRGB(i*block+b_x, j*block+b_y, new Color(rgb_b,rgb_b,rgb_b).getRGB());}}return bi_output;}public static int getGrey(int rgb){int r = (rgb >> 16) & 0xff;//取出次高位(16-23)红色分量的信息 int g = (rgb >> 8) & 0xff;//取出中位(8-15)绿色分量的信息 int b = rgb & 0xff;//取出低位(0-7)蓝色分量的信息 return (r+g+b)/3;}}
这是解密代码
package wjoker;import java.awt.Color;import java.awt.Rectangle;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Iterator;import javax.imageio.ImageIO;import javax.imageio.ImageReadParam;import javax.imageio.ImageReader;import javax.imageio.stream.ImageInputStream;public class jiemi {static String host = "H:\\Workspaces\\MyEclipse 2015 CI\\DCT\\src\\out1.jpg";static String key = "H:\\Workspaces\\MyEclipse 2015 CI\\DCT\\src\\key.jpg";//static String output = "H:\\Workspaces\\MyEclipse 2015 CI\\DCT\\src\\out1.jpg";static String output = "H:\\Workspaces\\MyEclipse 2015 CI\\DCT\\src\\out2.jpg";static String readImageFormat = "jpg";static String writeImageFormat = "jpg";static int a_x = 0;static int a_y = 0;static int b_x = 7;static int b_y = 0;static int weight = 400;static int hight = 560;static int block = 8;static int weight_size = weight/block;static int hight_size = hight/block;public static void main(String[] args) {BufferedImage bi_host = null;BufferedImage bi_key = null;BufferedImage bi_output = null;bi_host = input_img(host, readImageFormat);bi_key = input_img_min(key, readImageFormat);bi_output = bi_key;output_img(bi_output, writeImageFormat, output);}public static BufferedImage input_img(String input_File,String readImageFormat){FileInputStream fis = null;ImageInputStream iss = null;BufferedImage bi = null;try {fis = new FileInputStream(input_File);Iterator it = ImageIO.getImageReadersByFormatName(readImageFormat);ImageReader reader = (ImageReader) it.next();try {iss = ImageIO.createImageInputStream(fis);reader.setInput(iss,true);ImageReadParam param = reader.getDefaultReadParam();Rectangle rect = new Rectangle(0,0,400,560);param.setSourceRegion(rect);bi = reader.read(0,param);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return bi;}public static BufferedImage input_img_min(String input_File,String readImageFormat){FileInputStream fis = null;ImageInputStream iss = null;BufferedImage bi = null;try {fis = new FileInputStream(input_File);Iterator it = ImageIO.getImageReadersByFormatName(readImageFormat);ImageReader reader = (ImageReader) it.next();try {iss = ImageIO.createImageInputStream(fis);reader.setInput(iss,true);ImageReadParam param = reader.getDefaultReadParam();Rectangle rect = new Rectangle(0,0,100,140);param.setSourceRegion(rect);bi = reader.read(0,param);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}return bi;}public static void output_img(BufferedImage bi,String writeImageFormat,String output_File){try {ImageIO.write(bi, writeImageFormat, new File(output_File));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static int getGrey(int rgb){int r = (rgb >> 16) & 0xff;//取出次高位(16-23)红色分量的信息 int g = (rgb >> 8) & 0xff;//取出中位(8-15)绿色分量的信息 int b = rgb & 0xff;//取出低位(0-7)蓝色分量的信息 return (r+g+b)/3;}public static void change(BufferedImage bi_host,BufferedImage bi_output){int i,j;int rgb_a,rgb_b;boolean flag;for(i=0;i<weight_size;i++){for(j=0;j<hight_size;j++){rgb_a = getGrey(bi_host.getRGB(i*block+a_x, j*block+a_y));rgb_b = getGrey(bi_host.getRGB(i*block+b_x, j*block+b_y));if(rgb_a>rgb_b)bi_output.setRGB(i, j, new Color(0,0,0).getRGB());else bi_output.setRGB(i, j, new Color(255,255,255).getRGB());}}}}
还是那个坑爹的绝对路径烦死爹了,
好了,荆轲刺秦王.
0 0
- DCT加密(Java((伪
- DCT JAVA
- DCT变换(JAVA)
- dct
- DCT蝶形运算java实现
- Apk伪加密实现与破解JAVA源码
- 伪随机数加密思路
- 伪随机数加密新思路
- apk文件伪加密
- App伪加密
- zip伪加密
- zip格式文件伪加密
- ZIP文件伪加密
- CTF 伪加密
- zip格式伪加密
- Zip伪加密方式
- [CTF]zip伪加密
- zip伪加密
- Lab4 Authentication
- 本地yum源的创建,以及shell脚本安装.
- CSDN论坛网友写的一篇IOCP文章 -- 理解IOCP
- leetcode -- Trapping Rain Water -- 重点
- nginx源码分析--使用GDB调试
- DCT加密(Java((伪
- Android高德地图开发--读取解析KML文件并显示在地图上
- 文章标题
- 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡
- 优化积分方法在Matlab中的实践
- Linux负载均衡软件LVS之一(概念篇)
- android 解码出来的视频frame数据,是如何一步步的传递到显示端的(使用 GPU offline 合成)
- java编程思想(读书笔记):9.持有你的对象
- leetcode303-range sum query-python