간단한 행렬 곱셈 기반 암호화를위한 대학 프로젝트 작업.행렬 곱셈에 의한 암호화
프로젝트 개요는 다음과 같습니다.
텍스트 파일에 행렬을 곱한 암호화 키 매트릭스 = 암호화 된 파일.
키 매트릭스의 역행을 곱한 행렬에 암호화 된 파일 = 암호가 해독 된 파일.
는하지만 조금 더 가서 에게 (, GIF 등 등을 텍스트, MP3) 모든 파일을 할 수 있어야합니다.
저는이 문제를 해결하기 위해 수 시간 동안 연구 해 왔으며 조금 좌절하기 시작했습니다.
내가 생각할 수있는 가장 좋은 방법은 원시 바이너리를 읽고 암호화를 수행하는 것입니다.
그래서 -> 질문 :
나는 파일에 행렬 곱셈과 (본질적으로) 다시 쓰기 바이너리를 수행 행렬에 넣어 파일에서 원시 이진을 추출 할 수 있습니까?
또한 다른 컴퓨터에서 이러한 방법의 실행 가능성은 무엇입니까? 및 플랫폼? (내가 다시 변환 int 형 및 암호 해독에 이진 변환 아마도 경우이를 생각하고, 서로 다른 컴퓨터에 다른 크기 할당을 change-- 수 등?)
을 또한, 나는이 의견에 오신 것을 환영 해요 더 나은 솔루션에
---> 그러나 기본 알고리즘은 행렬 곱셈을 기반으로해야합니다.
내 코드 :
int writetomatrix(int current_variable)
{
if (counter == 9){
counter=0;
b=0;
a=0;}
if (b==3) b=0;
if (a==3) {b++;
a=0;}
counter++;
B[a][b]=current_variable;
a++;
}
int main() {
int *buffer= new int[1];
ifstream input;
input.open ("input.txt",ios::in|ios::binary);
input.read ((char*)&buffer, 1);
writetomatrix(buffer);
}
오류 내가 얻을 :
initializing argument 1 of ‘int writetomatrix(int)’
유닉스의'crypt' (구식) 버전은 Hill 암호를 사용했습니다. 이것은 당신이 묘사 한 것입니다. 나는 보지 않았지만 적어도 하나의 그러한 구현에 대한 소스를 상당히 쉽게 찾을 수 있습니다. –
답장을 보내 주셔서 감사합니다.하지만 제가 말한 것처럼 이진 계산을 할 수 있는지 알고 싶습니까? – midnightBlue
짧은 대답은 "예"입니다. 바이너리 데이터를 읽고 조작 할 수 있습니다. 일반적으로'unsigned char'의 배열 (또는 벡터 등)로 사용합니다. –