#include stdio.h
十載的會(huì)澤網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整會(huì)澤建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“會(huì)澤網(wǎng)站設(shè)計(jì)”,“會(huì)澤網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
#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("將要加密的數(shù)據(jù)");
puts(buffer);
printf("字符一共有: %d\n",len);
puts("準(zhǔn)備加密");
for(i=0;ilen;i++)
{
buffer[i] ^= M_S;
}
lseek(fp,0,SEEK_SET);
write(fp,buffer,len);
close(fp); //關(guān)閉文件
}
int main(int argc,char *argv[])
{
FILE *fp;
char buffer[JIA_SIZE];
char ch;
if(argc 2){ //如果沒有輸入路徑就錯(cuò)誤
puts("請(qǐng)輸入正確的參數(shù)比如: ./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("請(qǐng)輸入正確的菜單參數(shù)(1-3)");
}
return 0;
}
需要依賴Java加密擴(kuò)展的支持才能實(shí)現(xiàn)。
用Java實(shí)現(xiàn)AES需要依賴Java加密擴(kuò)展TheJavaCryptographyExtension,簡(jiǎn)稱JCE的支持主要是在javax下面的一些包。根據(jù)描述需要使用的算法為AESCBCNoPadding。
Java語言的語法與C語言和C加加語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用。另一方面,Java丟棄了C加加中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語言不使用指針,而是引用。并提供了自動(dòng)分配和回收內(nèi)存空間,使得程序員不必為內(nèi)存管理而擔(dān)憂。
使用AES加密時(shí),當(dāng)密鑰大于128時(shí),代碼會(huì)拋出java.security.InvalidKeyException: Illegal key size or default parameters
Illegal key size or default parameters是指密鑰長(zhǎng)度是受限制的,java運(yùn)行時(shí)環(huán)境讀到的是受限的policy文件。文件位于${java_home}/jre/lib/security
這種限制是因?yàn)槊绹鴮?duì)軟件出口的控制。
解決辦法:
去掉這種限制需要下載Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files.網(wǎng)址如下。
下載包的readme.txt 有安裝說明。就是替換${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar
jdk 5:
你解密的key必須是加密的key啊
你看看,你解密的時(shí)候又KeyGenerator.getInstance("AES").generateKey();這是重新搞了一個(gè)key啊,當(dāng)然解不出來了
我估計(jì)你這代碼人家原先是寫在一起的吧,加密完了再直接解密給你看,人家只generateKey一次,自然很順利,你分成了兩個(gè)例子,居然分別generateKey,自然失敗