#define BufLength 100
void Encrypted_Decrypt(char* filepath, char* sec, int seclegth)
{
FILE * file = fopen(filepath, "r+")
if (NULL == file)
{
std::cout <<"打开文件出错" <<std::endl
return
}
char buffer[BufLength]
char secret[BufLength]
int n = 0
while ((n = fread(buffer, 1, BufLength, file))>0)
{
for (int i = 0i <ni++)
secret[i] = buffer[i] ^ sec[i % (seclegth + 1)]//加密
fseek(file, -n, SEEK_CUR)//移动字符串头在文件中的位置
fwrite(secret, 1, n, file)//覆盖写入秘文
fseek(file, n, SEEK_CUR)//移动字符串尾在文件中的位置,下次循环读取下一串
}
fclose(file)
}
int main()
{
std::cout <<"输入密码:"
char psw[256]
std::cin >>psw
std::cout <<"加密或者解密文件(全路径如d:/1.txt):"
char filepath[256]
std::cin >>filepath
Encrypted_Decrypt(filepath, psw, strlen(psw))
return 0
}
C语言设计一个简单的加密解密程序如下:加密程序代码:
#include<stdio.h>
main()
{
char c,filename[20]
FILE *fp1,*fp2
printf("请输入待加密的文件名:\n")
scanf("%s",filename)
fp1=fopen(filename,"r")
fp2=fopen("miwen.txt","w")
do
{
c=fgetc(fp1)
if(c>=32&&c<=126)
{
c=c-32
c=126-c
}
if(c!=-1)
fprintf(fp2,"%c",c)
}
while(c!=-1)
}
解密程序代码:
#include<stdio.h>
#include<string.h>
main()
{
char c,filename[20]
char yanzhengma[20]
FILE *fp1,*fp2
printf("请输入待解密文件名:\n")
scanf("%s",filename)
printf("请输入验证码:\n")
scanf("%s",yanzhengma)
if(strcmp(yanzhengma,"shan")==0)
{
fp1=fopen(filename,"r")
fp2=fopen("yuanwen.txt","w")
do
{
c=fgetc(fp1)
if(c>=32&&c<=126)
{
c=126-c
c=32+c
}
if(c!=-1)
fprintf(fp2,"%c",c)
}
while(c!=-1)
}
else
{
printf("验证码错误!请重新输入:\n")
scanf("%s",filename)
}
}
//引入文件import java.security.*
import javax.crypto.*
/**
* RSACryptography
* RSACryptography use the privated key to encrypt the plain text and decrypt
* the cipher text with the public key
*/
public class RSACryptography {
Cipher cipher
/**
构造函数,就是你每次new这个对象RSACryptography 时候就会执行里面的方法
返回一个Cipher对象(其实他就是用来加密解密的)
*/
public RSACryptography() {
try {
cipher = Cipher.getInstance("RSA")//返回一个cipher对象,该类
//应该是单例的
} catch (NoSuchAlgorithmException e) {//抛出异常,没什么说的
e.printStackTrace()
} catch (NoSuchPaddingException e) {
e.printStackTrace()
}
}
/**
好了,重点来了,你需要加密解密的就调用这个方法encrypt_decrypt(),传入一个byte[]的类型值byteInput,,就是你要加密的东西,在传入一个key,这个key 就像钥匙一样,你根据这个key进行加密,也可以根据这个key进行解密的,boolean 类型的 crypto,如果true就是加密,false就是解密
*/
public byte[] encrypt_decrypt(byte[] byteInput, Key key, boolean crypto) {
try {
if(crypto){
cipher.init(Cipher.ENCRYPT_MODE,key)//加密前初始化
}else{
cipher.init(Cipher.DECRYPT_MODE,key)//解密前初始化
}
byte[] cipherByte = cipher.doFinal(byteInput)//进行加密或解密
return cipherByte//返回你的加密或者解密值类型为byte[]
} catch (InvalidKeyException e) {//抛出异常
e.printStackTrace()
} catch (IllegalBlockSizeException e) {
e.printStackTrace()
} catch (BadPaddingException e) {
e.printStackTrace()
}
return null
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)