实现加密请参考之前的这篇文章
简化版请参考这里

#include <stdio.h>
#include <string.h>#define TXTSIZE 76char text[TXTSIZE];
char base64[(TXTSIZE - 1) / 3 * 4 + 1];
unsigned char list[173];char base(char length, char *text, char *base64){char basecnt = 0;char textcnt = 0;char flag = 0;if(!length)return 0;if(base64[length - 2] == '\n')base64[length-- - 2] = 0;while(base64[length - 2] == '='){base64[length - 2] = 0;flag++;}for(basecnt = 0; basecnt < length; basecnt += 4){textcnt = basecnt / 4 * 3;text[textcnt] = ((list[base64[basecnt]] << 2) & 0xfc) |((list[base64[basecnt + 1]] >> 4) & 0x03);text[textcnt + 1] = ((list[base64[basecnt + 1]] << 4) & 0xf0) |((list[base64[basecnt + 2]] >> 2) & 0x0f);text[textcnt + 2] = ((list[base64[basecnt + 2]] << 6) & 0xc0) |(list[base64[basecnt + 3]] & 0x3f);text[textcnt + 3] = '\0';}return length / 4 * 3 - flag;
}int main(int argc, char* argv[]){char b64 = 'A';char txt = 0;for(; b64 <= 'Z'; b64++, txt++)list[b64] = txt;for(b64 = 'a'; b64 <= 'z'; b64++, txt++)list[b64] = txt;for(b64 = '0'; b64 <= '9'; b64++, txt++)list[b64] = txt;list['+'] = txt++;list['/'] = txt;FILE *fp = NULL;if(argc - 1){fp = fopen(argv[1], "r");if(!fp){printf("cannot open the file %s !\n", argv[1]);return 1;}char outf[strlen(argv[1]) - 4 + 1];sprintf(outf, "%s", argv[1]);outf[strlen(argv[1]) - 4] = 0;FILE *fpo = NULL;fpo = fopen(outf, "wb");if(!fpo){printf("cannot write to the file %s !\n", outf);return 1;}memset(base64, 0, (TXTSIZE - 1) / 3 * 4 + 1);char readcnt = 0;while(readcnt = base(fread(base64, 1, (TXTSIZE - 1) / 3 * 4 + 1, fp), text, base64)){fwrite(text, 1, readcnt, fpo);memset(base64, 0, (TXTSIZE - 1) / 3 * 4 + 1);}fclose(fpo);fclose(fp);printf("original file has been saved into %s\n", outf);return 0;}else{memset(base64, 0, (TXTSIZE - 1) / 3 * 4 + 1);printf("base64 code:");scanf("%s", base64);}base(strlen(base64), text, base64);printf("original text:%s\n", text);return 0;
}

用C语言实现base64解密(包括二进制文件)相关推荐

  1. 前台页面Base64加密与服务端Base64解密

    2019独角兽企业重金招聘Python工程师标准>>> 一般对于用户登录的密码,在网络传输的过程中,不会使用明文传送,此处介绍一种简单的加密用户密码信息的方法:Base64加密解密. ...

  2. C语言变量的定义包括变量存储类型和变量的什么?

    C语言变量的定义包括变量存储类型和变量的名称.C语言定义变量的格式:"数据类型 变量名;","数据类型"表示想要存储什么类型的数据,"变量名" ...

  3. c语言深度解剖 pdf,c语言深度解剖(解密).pdf.pdf

    c语言深度解剖(解密).pdf.pdf 还剩 130页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: * Str ...

  4. c语言文件加密解密单词统计,C语言文件加密解密及单词统计程序.doc

    C语言文件加密解密及单词统计程序.doc (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 15.9 积分  高级语言程序设计 课程设计学 院 计算 ...

  5. 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“itJava练习之翁恺MOOC——第六周

    Java练习之翁恺MOOC 一.前言 一.题目 1.第六周 单词长度 2.第六周 GPS数据处理 二.代码实现 1.单词长度 2.GPS数据处理 总结 一.前言 零基础学习Java语言 一.题目 1. ...

  6. Base64解密算法、AES解密

    爬船讯网数据的时候发现其数据经过加密,一开始判断认为是Base64加密,后来发现是AES加密. 因为通过Base64解密发现,总是报错:UnicodeDecodeError: 'utf-8' code ...

  7. C语言实现Base64编码转码

    C语言实现Base64编码转码 关于Base64的介绍有两篇文章已经做得非常好了:一篇是维基百科Base64的词条,如果被Q可以看本文

  8. C语言加密和解密算法

    C语言加密和解密算法 简介:字符串的加密和解密方法一直被广泛应用,最常见的无非是 MD5 散列函数(MD5是信息摘要的一种,可以从任意长度的字符串生成128位的哈希值). 先来看代码:(注意作者代码中 ...

  9. postgresql 的 base64 解密、解码

    select encode('123456', 'base64')  加密 select decode('313233343536', 'base64') 解密 字符集指定 CONVERT_FROM( ...

  10. 易语言文本_解密c,易语言解密数据教学

    在数据的江湖中,一直隐藏着两股"势不两立"的"暗涌"-加密与解密,没有人知道这两股力量从何时开始到何时结束.貌似扯远了,回归主题-易语言如何解密数据,带着种种谜 ...

最新文章

  1. CPSR和SPSR(转)
  2. oracle添加分区语句_按照子分区模板添加子分区
  3. win7计算机不支持此接口,win7系统IIS服务器启动失败显示不支持此接口的解决方法...
  4. 为什么lamda不能修改外部引用的变量?
  5. model 提交表信息java,Angular6+antd+java+SpringMVC,表单提交自动接收模型对象?
  6. FireFox的插件
  7. python从入门到精通-Python从入门到精通
  8. 基于scap的服务器安全基线核查设计与实现
  9. 虚拟机单一网卡设置两个IP
  10. 仿QQ聊天软件2.0版
  11. Origin8画图:将多个worksheet表画在同一张图
  12. 物联网应用案例:镇海智慧水务
  13. 网易云音乐python爬虫(Js破解)
  14. 谁的php最厉害,羽坛四大天王谁最强?羽毛球四大天王排行榜(图)
  15. 放大镜展示特效,仿华为手机商品~
  16. 中了勒索病毒怎么办?怎么预防
  17. 【Java基础】面向对象(三)
  18. H3C安全技术高级工程师H3CSE Security GB0-551
  19. 解答篇:金蝶K3WISE-付款单:被关联的订单******的付款关联金额超过最大可钩稽数值
  20. 微信支付服务商API 证书(权威CA颁发)是做什么用的?

热门文章

  1. 未能加载文件或程序集“Newtonsoft.Json解决方法
  2. Android App Bundle: 最新改进和 Google Play 新应用计划
  3. 为什么打印还要另存为_为什么打印图片时出现文件另存为
  4. 自动化测试八宗罪- 读Test Automation Snake Oil的一点翻译和感想
  5. JavaScript正则表达式匹配中英文以及常用标点符号白名单写法
  6. 三层交换技术..使用三层交换技术实现VLAN间通信
  7. 如何在视频上添加水印?建议收藏这些方法
  8. 总结一下m3u8格式相关问题
  9. 使用sklearn处理经纬度的三种距离计算与地图可视化
  10. Hbase性能测试及优化过程记