十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
#include stdio.h
十载的会泽网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整会泽建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“会泽网站设计”,“会泽网站推广”以来,每个客户项目都认真落实执行。
#include stdlib.h
#include fcntl.h
#include unistd.h
#define JIA_SIZE 1024
#define M_S 25
//加密菜单
void menu()
{
puts("(1)加密");
puts("(2)解密");
puts("(3)退出");
}
//加密
void jiami(const char *path/*加密路径*/)
{
int i;
int fp,len;
char buffer[1024];
puts("正在加密... ...");
fp = open(path,O_RDWR); //open以读写方式打开
len=read(fp,buffer,1024);
puts("将要加密的数据");
puts(buffer);
printf("字符一共有: %d\n",len);
puts("准备加密");
for(i=0;ilen;i++)
{
buffer[i] ^= M_S;
}
lseek(fp,0,SEEK_SET);
write(fp,buffer,len);
close(fp); //关闭文件
}
int main(int argc,char *argv[])
{
FILE *fp;
char buffer[JIA_SIZE];
char ch;
if(argc 2){ //如果没有输入路径就错误
puts("请输入正确的参数比如: ./jiami /home/long/bin/123.txt");
return 0;
}
else{//显示加密或者解密路径
printf("你加密或者解密的路径:");
puts(argv[1]);
}
menu(); //显示菜单
switch(ch=getchar())
{
case '1'://加密
jiami(argv[1]);
break;
case '2'://解密
jiami(argv[1]);
break;
case '3'://退出
return 0;
break;
defualt:
puts("请输入正确的菜单参数(1-3)");
}
return 0;
}
需要依赖Java加密扩展的支持才能实现。
用Java实现AES需要依赖Java加密扩展TheJavaCryptographyExtension,简称JCE的支持主要是在javax下面的一些包。根据描述需要使用的算法为AESCBCNoPadding。
Java语言的语法与C语言和C加加语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java丢弃了C加加中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。
使用AES加密时,当密钥大于128时,代码会抛出java.security.InvalidKeyException: Illegal key size or default parameters
Illegal key size or default parameters是指密钥长度是受限制的,java运行时环境读到的是受限的policy文件。文件位于${java_home}/jre/lib/security
这种限制是因为美国对软件出口的控制。
解决办法:
去掉这种限制需要下载Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files.网址如下。
下载包的readme.txt 有安装说明。就是替换${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar
jdk 5:
你解密的key必须是加密的key啊
你看看,你解密的时候又KeyGenerator.getInstance("AES").generateKey();这是重新搞了一个key啊,当然解不出来了
我估计你这代码人家原先是写在一起的吧,加密完了再直接解密给你看,人家只generateKey一次,自然很顺利,你分成了两个例子,居然分别generateKey,自然失败