下面的代码使帮我写下程序啊

问题描述

namespaceMyCryptoHelp{///<summary>///异常处理类///</summary>publicclassCryptoHelpException:ApplicationException{publicCryptoHelpException(stringmsg):base(msg){}}///<summary>///CryptHelp///</summary>publicclassCryptoHelp{privateconstulongFC_TAG=0xFC010203040506CF;privateconstintBUFFER_SIZE=128*1024;///<summary>///检验两个Byte数组是否相同///</summary>///<paramname="b1">Byte数组</param>///<paramname="b2">Byte数组</param>///<returns>true-相等</returns>privatestaticboolCheckByteArrays(byte[]b1,byte[]b2){if(b1.Length==b2.Length){for(inti=0;i<b1.Length;++i){if(b1!=b2)returnfalse;}returntrue;}returnfalse;}///<summary>///创建RijndaelSymmetricAlgorithm///</summary>///<paramname="password">密码</param>///<paramname="salt"></param>///<returns>加密对象</returns>privatestaticSymmetricAlgorithmCreateRijndael(stringpassword,byte[]salt){PasswordDeriveBytespdb=newPasswordDeriveBytes(password,salt,"SHA256",1000);SymmetricAlgorithmsma=Rijndael.Create();sma.KeySize=256;sma.Key=pdb.GetBytes(32);sma.Padding=PaddingMode.PKCS7;returnsma;}///<summary>///加密文件随机数生成///</summary>privatestaticRandomNumberGeneratorrand=newRNGCryptoServiceProvider();///<summary>///生成指定长度的随机Byte数组///</summary>///<paramname="count">Byte数组长度</param>///<returns>随机Byte数组</returns>privatestaticbyte[]GenerateRandomBytes(intcount){byte[]bytes=newbyte[count];rand.GetBytes(bytes);returnbytes;}///<summary>///加密文件///</summary>///<paramname="inFile">待加密文件</param>///<paramname="outFile">加密后输入文件</param>///<paramname="password">加密密码</param>publicstaticvoidEncryptFile(stringinFile,stringoutFile,stringpassword){using(FileStreamfin=File.OpenRead(inFile),fout=File.OpenWrite(outFile)){longlSize=fin.Length;//输入文件长度intsize=(int)lSize;byte[]bytes=newbyte[BUFFER_SIZE];//缓存intread=-1;//输入文件读取数量intvalue=0;//获取IV和saltbyte[]IV=GenerateRandomBytes(16);byte[]salt=GenerateRandomBytes(16);//创建加密对象SymmetricAlgorithmsma=CryptoHelp.CreateRijndael(password,salt);sma.IV=IV;//在输出文件开始部分写入IV和saltfout.Write(IV,0,IV.Length);fout.Write(salt,0,salt.Length);//创建散列加密HashAlgorithmhasher=SHA256.Create();using(CryptoStreamcout=newCryptoStream(fout,sma.CreateEncryptor(),CryptoStreamMode.Write),chash=newCryptoStream(Stream.Null,hasher,CryptoStreamMode.Write)){BinaryWriterbw=newBinaryWriter(cout);bw.Write(lSize);bw.Write(FC_TAG);//读写字节块到加密流缓冲区while((read=fin.Read(bytes,0,bytes.Length))!=0){cout.Write(bytes,0,read);chash.Write(bytes,0,read);value+=read;}//关闭加密流chash.Flush();chash.Close();//读取散列byte[]hash=hasher.Hash;//输入文件写入散列cout.Write(hash,0,hash.Length);//关闭文件流cout.Flush();cout.Close();}}}///<summary>///解密文件///</summary>///<paramname="inFile">待解密文件</param>///<paramname="outFile">解密后输出文件</param>///<paramname="password">解密密码</param>publicstaticvoidDecryptFile(stringinFile,stringoutFile,stringpassword){//创建打开文件流using(FileStreamfin=File.OpenRead(inFile),fout=File.OpenWrite(outFile)){intsize=(int)fin.Length;byte[]bytes=newbyte[BUFFER_SIZE];intread=-1;intvalue=0;intoutValue=0;byte[]IV=newbyte[16];fin.Read(IV,0,16);byte[]salt=newbyte[16];fin.Read(salt,0,16);SymmetricAlgorithmsma=CryptoHelp.CreateRijndael(password,salt);sma.IV=IV;value=32;longlSize=-1;//创建散列对象,校验文件HashAlgorithmhasher=SHA256.Create();using(CryptoStreamcin=newCryptoStream(fin,sma.CreateDecryptor(),CryptoStreamMode.Read),chash=newCryptoStream(Stream.Null,hasher,CryptoStreamMode.Write)){//读取文件长度BinaryReaderbr=newBinaryReader(cin);lSize=br.ReadInt64();ulongtag=br.ReadUInt64();if(FC_TAG!=tag)thrownewCryptoHelpException("文件被破坏");longnumReads=lSize/BUFFER_SIZE;longslack=(long)lSize%BUFFER_SIZE;for(inti=0;i<numReads;++i){read=cin.Read(bytes,0,bytes.Length);fout.Write(bytes,0,read);chash.Write(bytes,0,read);value+=read;outValue+=read;}if(slack>0){read=cin.Read(bytes,0,(int)slack);fout.Write(bytes,0,read);chash.Write(bytes,0,read);value+=read;outValue+=read;}chash.Flush();chash.Close();fout.Flush();fout.Close();byte[]curHash=hasher.Hash;//获取比较和旧的散列对象byte[]oldHash=newbyte[hasher.HashSize/8];read=cin.Read(oldHash,0,oldHash.Length);if((oldHash.Length!=read)||(!CheckByteArrays(oldHash,curHash)))thrownewCryptoHelpException("文件被破坏");}if(outValue!=lSize)thrownewCryptoHelpException("文件大小不匹配");}}}}//调用publicclassTestClass{stringmyPassword="TEST_PASSWORD_~!@#";stringmyPlainFile="test.txt";stringmyEncryptedFile="test.encrypted";stringmyDecryptedFile="test.decrypted";[STAThread]staticvoidMain(){CryptoHelp.EncryptFile(myPlainFile,myEncryptedFile,myPassword);CryptoHelp.DecryptFile(myEncryptedFile,myDecryptedFile,myPassword);}}谢谢了,写好帮忙发我信箱:hyuesf@qq.com

解决方案

解决方案二:
要实现什么?
解决方案三:
是解密文本用的程序
解决方案四:
...这么长,程序有错误还是怎么的?
解决方案五:
什么呀

时间: 2024-09-08 05:24:38

下面的代码使帮我写下程序啊的相关文章

c++-有哪位哥哥姐姐可以帮我写下程序(关于二叉树的 或者栈)

问题描述 有哪位哥哥姐姐可以帮我写下程序(关于二叉树的 或者栈) 那个运用c++编写两个程序,其中一个是实现二叉树(或者栈),另一个是运用二叉树(或者栈)解决实际问题.谢谢啦,实在是没搞懂. 解决方案 /** <!-- File : stack.h Author : fancy Email : fancydeepin@yeah.net Date : 2013-02-03 --!> */ #include #include #include #define Element char #defin

jsp-JSP传给action的是字符串类型,转换数据类型,让getlist()接收,求大神帮帮忙写下代码

问题描述 JSP传给action的是字符串类型,转换数据类型,让getlist()接收,求大神帮帮忙写下代码 JSP传给action的是字符串类型,怎么转换数据类型,然后让getlist()接收,求各位大神帮帮忙写下代码~ 如果能够给解释一下,那就千恩万谢啦 解决方案 可以通过强制转换在前面加上int 解决方案二: gongWenLeiBieList = dao.getList(Integer.parseInt(mingCheng));

变换-麻烦各位帮我改下程序吧,输入#include &amp;amp;quot;stdafx.h&amp;amp;quot;在VC++上面不能运行呀~~

问题描述 麻烦各位帮我改下程序吧,输入#include "stdafx.h"在VC++上面不能运行呀~~ #include ""stdafx.h""#include #include #include #include #include #define N 1000 /*定义复数类型*/ typedef struct { double real; double img; }complex; void fft(); /*快速傅里叶变换*/ void

python-大神帮我改一下程序吧。去掉第一个逗号后内容重复的行。只保留一条

问题描述 大神帮我改一下程序吧.去掉第一个逗号后内容重复的行.只保留一条 #!/usr/bin/python -*- coding: utf-8 -*- 原文本里边有重复的,去重复行 import requchong = open('G:07txtchongfuhang.txt''r').readlines()quchonghou = open('G:07txtchongfuhanghou.txt''w') unique_quchong = []for each_line in quchong:

python-去掉第一个逗号后内容重复的行,只保留一行。我是新手,大神帮我写一下程序。非常谢谢

问题描述 去掉第一个逗号后内容重复的行,只保留一行.我是新手,大神帮我写一下程序.非常谢谢 3798 a3 1-14 16:52,西部城区,受到部分商圈打折促销影响,阜成路.复兴路三环以外出城一线交通压力较大, 3799 a3 1-14 16:53,西部城区,受到部分商圈打折促销影响,阜成路.复兴路三环以外出城一线交通压力较大, 3800 a3 1-14 16:58,东北二环内环一线交通压力较大,车辆选择平安大街.东外小街.朝外小街等道路行驶. 我的思路是: time, content = re

c++-我调用opencv中的函数计算出的hu矩没有旋转、缩放不变性,请大家帮我看下程序哪出问题了。

问题描述 我调用opencv中的函数计算出的hu矩没有旋转.缩放不变性,请大家帮我看下程序哪出问题了. #include #include #include using namespace std; using namespace cv; int main(int argc, char *argv[]) {//读入图片预处理 Mat image=imread("F:vs2010 project21.jpg"); //image.create(480, 640, CV_8UC1); na

python 大神帮我看下程序,怎么前边时间加载错误

问题描述 python 大神帮我看下程序,怎么前边时间加载错误 解决方案 你其实可以直接判断在不在unique_quchong中后,如果不在,直接把当前行一整行写入文件就可以了.

哪位大神可以帮我写下在Oracle数据库中查询出来的数据在jsp页面中进行分页显示,我已经能显示了,但是没有分页,直接改我的代码,我初学,没做过分页

问题描述 这是JSP页面代码:<%@pagelanguage="java"contentType="text/html;charset=gbk"pageEncoding="GBk"%><%@pageimport="com.etc.sky.entity.Record"%><%@pageimport="java.util.*"%><!DOCTYPEHTMLPUBLIC&

跪求大家帮我写个程序,非常感谢

问题描述 设计Windows界面,一个窗口中有三个文本区.三个文本区中的一个可供用户编辑文本,另外两个不可编辑:当用户在编辑文本区中编辑文本时,另外两个文本区分别显示文本区中的单词.包含的数字.编辑的文本类似:Iwasbornin1992.12add16beequalto28. 解决方案 解决方案二:1.不可编辑完全可用用lable,或者设置文本框只读2.文本内容变化时,触发事件,利用正则匹配规则数据分别到显示区域3.显示区域,单词该.数字的分割问题解决方案三:OnChange事件中,去提取你要