BlowFish 대칭 암호화 알고리즘이란 무엇입니까?
대칭 암호화 알고리즘 소개:
대칭 암호화 알고리즘 대칭 암호화 알고리즘은 이전 암호화 알고리즘을 적용하는 것으로 기술적으로 성숙합니다. 대칭 암호화 알고리즘에서 데이터 발신자는 일반 텍스트 (원시 데이터) 와 암호화 키를 함께 특수 암호화 알고리즘으로 처리한 후 복잡한 암호화 암호문으로 전송합니다. 수신인이 암호문을 받은 후 원문을 해석하려면 암호화에 사용된 키와 같은 알고리즘의 역알고리즘을 사용하여 암호문을 해독해야 읽을 수 있는 일반 텍스트로 복원할 수 있습니다. 대칭 암호화 알고리즘에서 사용되는 키는 하나뿐이며, 수신인은 모두 이 키를 사용하여 데이터를 암호화하고 해독합니다. 이를 위해서는 암호 해독자가 암호화 키를 미리 알아야 합니다.
특징:
대칭 암호화 알고리즘은 알고리즘 공개, 계산량 감소, 암호화 속도 향상, 암호화 효율성 등을 특징으로 합니다.
단점은 거래 양측이 모두 같은 열쇠를 사용하며 보안이 보장되지 않는다는 것이다. 또한 사용자가 대칭 암호화 알고리즘을 사용할 때마다 다른 사람이 모르는 유일한 키를 사용해야 합니다. 이로 인해 수신 당사자가 소유한 키의 수가 기하급수적으로 증가하고 키 관리가 사용자의 부담이 됩니다. 대칭 암호화 알고리즘은 분산 네트워크 시스템에서 사용하기가 더 어렵습니다. 주로 키 관리가 어렵고 사용 비용이 높기 때문입니다. 공개 키 암호화 알고리즘과 비교했을 때 대칭 암호화 알고리즘은 암호화 및 인증을 제공하지만 서명 기능이 부족하여 사용 범위가 좁혀졌습니다. 컴퓨터 전용 네트워크 시스템에서 널리 사용되는 대칭 암호화 알고리즘은 DES, IDEA 등입니다. 미국 국가표준국이 주창한 AES 는 DES 를 새로운 표준으로 대체할 예정이다.
특정 알고리즘:
3DES 알고리즘, Blowfish 알고리즘, RC5 알고리즘. 대칭 암호화 알고리즘-원리 및 대칭 암호화 알고리즘 적용의 장점은 암호 해독의 빠른 속도와 긴 키를 사용할 때의 해독성에 있습니다. 두 사용자가 대칭 암호화 방법을 사용하여 데이터를 암호화한 다음 교환해야 한다고 가정하면 사용자는 최소 2 개의 키를 필요로 하며, 기업 내 사용자가 N 개를 가지고 있는 경우 전체 엔터프라이즈 * * * 에는 n×(n-1) 개의 키가 필요하며, 키 생성 및 배포는 기업 정보 부서의 악몽이 됩니다. 대칭 암호화 알고리즘의 보안은 암호화 키의 보존에 따라 다르지만, 기업의 모든 키를 보유하는 모든 사람에게 비밀을 지키도록 요구하는 것은 불가능하다. 그들은 보통 의도하지 않게 키를 유출한다. 한 사용자가 사용하는 키를 침입자가 얻으면 침입자는 해당 사용자 키로 암호화된 모든 문서를 읽을 수 있다. 만약 기업 전체가 하나의 암호화 키를 사용한다면, 기업 전체의 문서 기밀성은 말할 수 없다. (알버트 아인슈타인, Northern Exposure (미국 TV 드라마), 암호화, 암호화, 암호화, 암호화, 암호화, 암호화, 암호화)
Descryptoserviceprovider
RC2 cryptoserviceprovider
Rijndael managed
<; P >byte [] 키 = {24,55,102,24,98,26,67,29,84,19,37,118,100
byte [] iv = {22,56,82,77,84,31,74,24,55,102,24,98,
Rijndael managed my Rijndael = new Rijndael managed ();
filestream fs out = file.open (stroutname, FileMode.Create, fileaccess.write); //strOutName 파일 이름과 filestream fsin = file.open 경로 (strpath, FileMode.Open, fileaccess.read);
cryptostream csdecrypt = new cryptostream (fs out, my rijndael.create encryptor (키, IV) //암호화된 텍스트 읽기
binary reader br = new binary reader (fsin);
csdecrypt.write (br.read bytes ((int) fsin.length), 0, (int) fsin.;
csdecrypt.flushfinalblock ();
csdecrypt.close ();
fsin.close ();
fsout.close ();
// 파일 복호화
byte [] key = {24,55,102,24,98,26,67,24
byte [] iv = {22,56,82,77,84,31,74,24,55,102,24,98,
Rijndael managed my Rijndael = new Rijndael managed ();
filestream fs out = file.open (strpath, FileMode.Open, fileaccess.read);
cryptostream csdecrypt = new cryptostream (fs out, myR
Ijndael.createdecryptor (키, IV), cryptostreammode.read);
streamreader Sr = new streamreader (csdecrypt); //파일 읽기
streamwriter SW = new streamwriter (strinname); //복호화 후 파일이 새 파일
sw.write (sr.read to end ()) 에 기록됩니다.
sw.flush ();
sw.close ();
sr.close (); F
fsOut.Close(); ();
그림 암호화 (RC2 cryptoserviceprovider)
filestreamfspic = new filestream (picturebos
// 파일 스트림 암호화 (textBox1.Text 는 파일 이름과 경로)
filestream fstext = new filestream (textbox1.text)
byte [] bykey = new byte [16]; //초기화
키 ivbyte [] byiv = newbyte [8];
fsPic.Read(bykey, 0, 16);
fsPic.Read(byIv, 0, 8);
RC2 cryptoserviceprovider desc = new RC2 cryptoserviceprovider (); //desc 암호화
binary reader br = new binary reader (fstext); //암호화할 파일에서 파일 내용 읽기
filestream fs out = file.open (strlinpath, FileMode.Create, FileAccess.Write); // strLinPath 임시 암호화 파일 경로 cryptostream cs = new cryptostream (fsout, desc.CreateEncryptor(bykey, byIv), cryptor //임시 암호화 파일 쓰기
cs.write (br.read bytes ((int) fstext.length), 0, (int) fs //쓰기 암호화 스트림
cs.flushfinalblock ();
cs.flush ();
cs.close ();
fspic.close ();
fstext.close ();
fsout.close ();
그림으로 암호 해독
filestream fspic = new filestream (picturebox 1. image location, FileMode.Open //사진 스트림 FileStream fsOut = Fi
Le.Open(textBox1.Text, FileMode.Open, fileaccess.read); //파일 스트림 암호 해독
byte [] bykey = newbyte [16]; //초기화
키 ivbyte [] byiv = newbyte [8];
fsPic.Read(bykey, 0, 16);
fsPic.Read(byIv, 0, 8);
stringstrpath = textbox1.text; //암호화된 파일의 경로
intintlent = strpath.lastindexof ("\ \")+1;
intintlong = strpath.length;
stringstrname = strpath.substring (intlent, intlong-intlent); //암호화할 파일 이름
stringstrlinpath = "c: \ \"+strname; //임시 해독 파일 경로
filestream fs = new filestream (strlinpath, FileMode.Create, FileAccess.Write);
RC2 cryptoserviceprovider desc = new RC2 cryptoserviceprovider (); //desc 암호 해독
cryptostream csdecrypt = new cryptostream (fs out, desc.CreateDecryptor(byIvkey)
// 암호화된 파일 읽기
binary reader Sr = new binary reader (csdecrypt); //암호화할 스트림에서 파일 내용 읽기
binary writer SW = new binary writer (fs); //암호 해독 스트림 쓰기
sw.write (sr.readbytes (convert.toint32 (fsout.length));
//sw.flush ();
sw.close ();
sr.close ();
fs.close ();
fsout.close ();
fspic.close ();
csdecrypt.flush ();
file.delete (textbox1.text.trimend ()); //원본 파일 삭제
File.Copy(strLinPath, textbox1.text); //암호화된 파일 복사