C-这能算是一个加密程序吗?
把一个文件的内容读入内存,然后把每个字节取反,再写入文件,"解密"的过程跟"加密"一样。能算加密吗?
code:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <assert.h>
#include <string.h>
#include <stddef.h>
static void encryption_or_decipher(int fd, int wfd);
int main(int argc, const char *argv[])
{
if(argc != 2){
printf("usage:app filenamen");
return -1;
}
char newName[512];
bzero(newName,sizeof(newName));
sprintf(newName,"encry_%s",argv[1]);
int rfd = open(argv[1], O_RDWR, S_IWUSR|S_IRUSR);
assert(rfd != -1);
int wfd = open(newName, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
assert(wfd != -1);
encryption_or_decipher(rfd, wfd);
close(rfd);
close(wfd);
return 0;
}
#define BUF_SIZE (8129)
static void
encryption_or_decipher(int rfd, int wfd){
size_t msize = BUF_SIZE;
char *buf = malloc(msize);
assert(buf);
bzero(buf,msize);
char *bufp = buf;
size_t nread = 0, rtime = 0;
while((nread = read(rfd, bufp, BUF_SIZE)) == BUF_SIZE){
msize += BUF_SIZE;
buf = realloc(buf, msize);
assert(buf);
bufp = buf + ((++rtime)*BUF_SIZE);
bzero(bufp,BUF_SIZE);
}
if(nread < 0){
printf("Call read() failed!n");
exit(EXIT_FAILURE);
}else if(nread < BUF_SIZE)
msize = msize - (BUF_SIZE - nread);
else if(nread == BUF_SIZE)
msize -= BUF_SIZE;
bufp = buf;
for(int i = 0; i < msize; i++){
*bufp = ~(*bufp);
bufp++;
}
int wn;
while((wn = write(wfd, buf, msize)) < msize){
buf += wn;
msize -= wn;
}
free(buf);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。[来自百度百科‘加密’]
所以你这个一样算做加密,只是在平时,我们为了信息的安全不会做的这么简单而已
看你怎么理解加密了,不过这样的算法太容易破解了。猜几下就出来了。
广义上来说,只要进行文件的更改就算加密(不能解也是加密),但是实际的应用性和效果如何就无法保证了。
以密码学的角度去看,已经算是加密了,毕竟摆明了这就已经是密文了。
当然,你也可以再加入比如栅栏密码凯撒密码等一些简单的密码,几种密码叠加使用,嗯嗯,一般够吃一壶了。