重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
#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,自然失敗