當前位置:首頁 » 操作系統 » linuxdes

linuxdes

發布時間: 2023-02-28 23:02:46

㈠ des解密演算法,利用C語言解密JAVA語言加密的密碼。。密鑰為12345678,加密後的密文為:26d086be3a3a62fc

// C 語言 DES用的是 ECB模式, 沒有填充
// 因此Java端要對應, 你的明文是 liubiao 嗎?
// 另外 DES已經不安全了, 如果可以改為 3DES或者 AES吧。
public class LearnDes {

public static void main(String[] args) {
try {
System.out.println(encrypt("liubiao", "12345678"));

System.out.println(decrypt("26d086be3a3a62fc", "12345678"));
} catch (Exception e) {
e.printStackTrace();
}
}
public static String encrypt(String message, String key) throws Exception {
//Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
Cipher cipher = Cipher.getInstance("DES/ECB/NOPADDING");

DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));
//cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
cipher.init(Cipher.ENCRYPT_MODE, secretKey );

return toHexString(cipher.doFinal(message.getBytes("UTF-8")));
}

public static String decrypt(String message, String key) throws Exception {

byte[] bytesrc = convertHexString(message);

//Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
Cipher cipher = Cipher.getInstance("DES/ECB/NOPADDING");
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes("UTF-8"));
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
IvParameterSpec iv = new IvParameterSpec(key.getBytes("UTF-8"));

//cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
cipher.init(Cipher.DECRYPT_MODE, secretKey );

byte[] retByte = cipher.doFinal(bytesrc);
return new String(retByte);
}

public static byte[] convertHexString(String ss) {
byte digest[] = new byte[ss.length() / 2];
for (int i = 0; i < digest.length; i++) {
String byteString = ss.substring(2 * i, 2 * i + 2);
int byteValue = Integer.parseInt(byteString, 16);
digest[i] = (byte) byteValue;
}

return digest;
}
public static String toHexString(byte b[]) {
StringBuffer hexString = new StringBuffer();
for (int i = 0; i < b.length; i++) {
String plainText = Integer.toHexString(0xff & b[i]);
if (plainText.length() < 2)
plainText = "0" + plainText;
hexString.append(plainText);
}

return hexString.toString();
}
}

linux編程--文件原子操作

當多個進程同時訪問一個文件的時候,普通的write/read在執行的時候,無法保證操作的原子性,可能會導致文件被污染,達不到預期的結果。

任何一個需要多個函數調用的操作都不可能是原子操作,因為在兩個函數調用間,內核可能會將進程掛起執行另外的進程。

如果想要避免這種情況的話,則需要使用pread/pwrite函數

ssize_t pread(int fd ,void *buffer ,size_t size,off_t offset)
返回真正讀取到的位元組數,offset是指的從文件開始位置起的offset個位元組數開始讀。其餘的參數與read無異。

PS:
pread是無法中斷的原子操作,無法中斷它的定位和讀取操作
pread讀取過後的文件偏移量不會發生改變

同理pwrite也是一樣的

而在文件創建的時候也是一樣的,當需要做文件創建同步的時候,我們需要在O_CREATE的時候,加上O_EXCL標志位,當已經創建過的話,會返回fd,否則返回錯誤

int p( int filedes):
傳入一個文件描述符,返回當前可用的最小文件描述符。

int p2(int filedes,int filedes2):
傳入文件描述符,以及新的文件描述符,如果新的文件描述符所指向的文件已經打開,則會強行將其關閉後,將該文件描述符指向到已存在的文件描述符。
如果filedes和filedes2指向同一個文件,則不做任何處理,直接返回filedes2,不會關閉文件

新返回回來的filedes2會共享filedes的文件狀態標識,文件偏移量等等信息。因為它們的文件指針會指向文件表的同一個位置。只是fd不一樣而已。

㈢ 懸賞,linux系統與全盤格式化問題!!高手請進。。。

同學,你裝不了的現象是什麼呢,不過L的系統的確存在這個問題,解決方法幾乎很難確定,比如我的兼容機裝u8.04就是在裝機的時候死機,而8。10就不會,最終才發現是因為顯卡驅動的問題。我推薦你用虛擬機來裝L吧,那樣比較不會出問題。全盤格式化最簡單的方法就是你在安裝系統時(WINDOWS)選擇全新安裝,而且先把C以外的分區都刪除再重新劃分,裝完後進入系統,對這些新分區盤格式化(因為它們沒格式化不能使用)。我想你是想學習L吧,建議用虛擬機或者裝W和L雙系統,這樣出了問題好解決。

㈣ linux壓縮文件怎麼加密

方法一:用tar命令 對文件加密壓縮和解壓

壓縮:

  • tar-zcf-filename|openssldes3-salt-kpassword|ddof=filename.des3

此命令對filename文件進行加碼壓縮 生成filename.des3加密壓縮文件, password 為加密的密碼。

方法二:用zip命令對文件加密壓縮和解壓

  • zip-refilename.zipfilename回車,輸入2次密碼

㈤ 如何在Linux下用C語言實現MD5/DES解密

相關庫函數如下:
#include <openssl/md5.h>
unsigned char *MD5(const unsigned char *d, unsigned long n,unsigned char *md);
int MD5_Init(MD5_CTX *c);
int MD5_Update(MD5_CTX *c, const void *data,unsigned long len);
int MD5_Final(unsigned char *md, MD5_CTX *c);

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:593
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:888
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:582
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:765
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:684
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1013
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:255
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:114
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:806
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:713