c++怎么编写程序实现文件加密和解密?

c++怎么编写程序实现文件加密和解密?,第1张

#include <iostream>

#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

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7758385.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存