Rijndael 용법, 데 이 터 를 어떻게 채 웁 니까?

2992 단어
Rijndael 용법, 데 이 터 를 어떻게 채 웁 니까?
요 며칠 동안 고객 이 데이터 암호 화 를 요 구 했 습 니 다. 알고리즘 은 Rijndael 입 니 다. 그래서 인터넷 에서 다른 사람 이 쓴 알고리즘 코드 를 찾 아 프로젝트 에 통합 시 켰 습 니 다.구체 적 으로 어떻게 찾 는 지 는 여러분 이 직접 찾 아 보 세 요. 키 워드 는 Rijndael c + + 입 니 다.다운로드 한 후에 남 의 예 에서 암호 화 해 야 할 데 이 터 는 모두 16 바이트 의 정수 배 라 는 것 을 발견 했다.그러나 우리 가 암호 화 해 야 할 것 이 어디 가 이렇게 좋 은 지, 마침 16 의 정수 배 이다.나중에 다른 자 료 를 찾 아서 16 정수 배가 안 되 는 부분 은 데 이 터 를 채 워 야 한다 고 했 습 니 다.나 는 0 을 채 우 는 것 을 테스트 해 보 았 는데, 결 과 는 C \ # 의 암호 화 결과 와 다 르 고 답답 해 죽 을 지경 이 었 다.이 럴 때 는 C \ # 를 하 는 친구 들 이 정말 부럽다. 모든 것 을 다 포장 해 놓 았 으 니 스스로 코드 를 찾 지 않 아 도 된다.
한 번 에 한 번 시험 하면 반드시 결 과 를 맞 출 수 있 지만, 효율 이 너무 낮은 것 아 닙 니까?그래서 나 는 C \ # 암호 화 된 결 과 를 꺼 내 서 CRijndael 로 복호화 하 다가 데 이 터 를 어떻게 채 워 야 하 는 지 알 게 되 었 다.말 이 많 지 않 습 니 다. 코드 는 다음 과 같 습 니 다. 다른 친구 들 에 게 편 의 를 가 져 다 주 고 N 년 동안 처음으로 다른 우리 형제 에 게 보답 할 수 있 기 를 바 랍 니 다.
강조 하 자 면 키 는 최대 32 바이트, IV 는 최대 16 바이트, MYKEY 와 MYIV 가 너무 길 면 운행 이 통과 되 지 않 아서 코드 가 이것 에 대해 제한 을 두 었 다.
//Test.cpp

#include "Rijndael.h"
#include 
#include 

using namespace std;

#define DEFAULT_BLOCK_SIZE 16
#define MAX_KEY_LEN 32
#define MAX_IV_LEN 16
#define MY_KEY "UFCy76*h%(HilJ$lhj!y6&(*jkP87jH7"
#define MY_IV "hWk7&!hg4ui%$hjk"

//Function to convert unsigned char to string of length 2
void Char2Hex(unsigned char ch, char* szHex)
{
	unsigned char byte[2];
	byte[0] = ch/16;
	byte[1] = ch%16;
	for(int i=0; i<2; i++)
	{
		if(byte[i] >= 0 && byte[i] <= 9)
			szHex[i] = '0' + byte[i];
		else
			szHex[i] = 'A' + byte[i] - 10;
	}
	szHex[2] = 0;
}

//Function to convert string of length 2 to unsigned char
void Hex2Char(char const* szHex, unsigned char& rch)
{
	rch = 0;
	for(int i=0; i<2; i++)
	{
		if(*(szHex + i) >='0' && *(szHex + i) <= '9')
			rch = (rch << 4) + (*(szHex + i) - '0');
		else if(*(szHex + i) >='A' && *(szHex + i) <= 'F')
			rch = (rch << 4) + (*(szHex + i) - 'A' + 10);
		else
			break;
	}
}    

//Function to convert string of unsigned chars to string of chars
void CharStr2HexStr(unsigned char const* pucCharStr, char* pszHexStr, int iSize)
{
	int i;
	char szHex[3];
	pszHexStr[0] = 0;
	for(i=0; i

좋은 웹페이지 즐겨찾기