홈>
파일을 암호화하고 싶습니다. XOR을 사용하여 암호화합니다. 그러나 문제는 암호화 할 수 있지만 해독하고 싶을 때 원래 파일이 아닌 다른 결과를 제공한다는 것입니다.
내가 사용하는 코드는 다음과 같다
Public Function Encrypt(ByVal txt As String, ByVal pass As String) As String
Dim mem() As Byte
mem = StrConv(txt, vbFromUnicode)
For i = 0 To UBound(mem)
mem(i) = Asc(mem(i)) Xor Asc(Mid(pass, (i Mod Len(pass)) + 1, 1))
Next i
Encrypt = StrConv(mem, vbUnicode)
Erase mem
End Function
Public Function Decrypt(ByVal txt As String, ByVal pass As String) As String
Dim mem() As Byte
mem = StrConv(txt, vbFromUnicode)
For i = 0 To UBound(mem)
mem(i) = Asc(mem(i)) Xor Asc(Mid(pass, (i Mod Len(pass)) + 1, 1))
Next i
Decrypt = StrConv(mem, vbUnicode)
Erase mem
End Function
Private Sub Form_Load()
Enkrip = Encrypt(txt.LoadFile("C:\mom.txt"), "FROM YOUR SON")
dekrip = Decrypt(Enkrip, "FROM YOUR SON")
MsgBox Enkrip & vbCrLf & dekrip
End Sub
dekrip의 값은 C : \ mom.txt의 원래 내용이어야하지만 다른 결과를 반환합니다.
<시간>이 코드도 시도했는데 잘 작동합니다
Private Sub Form_Load()
Data = "A"
pass = "B"
enkrip = Chr(Asc(Data) Xor Asc(pass))
dekrip = Chr(Asc(enkrip) Xor Asc(pass))
MsgBox enkrip & vbCrLf & dekrip
End Sub
<시간>
코드를 수정하려면 어떻게해야합니까?
감사합니다
-
답변 # 1
-
답변 # 2
XOR을 암호화에 사용하는 경우 전달 된 비트 마스크를 기반으로 비트를 뒤집는 것입니다. 따라서 암호화와 암호 해독이 필요하지 않습니다. 둘 다 동일한 작업을 수행합니다. 코드를 닦지 않았지만 두 가지 가능성이 있습니다. 하나는 두 가지 중 하나가 작동하고 다른 하나는 그렇지 않습니다. 두 번 호출하여 어느 것이 작동하는지 파악하고 암호화 방법으로 만드십시오. 둘 다 실패하면 첫 번째 매개 변수를 유니 코드로 변환하지만 두 번째 매개 변수에서 동일한 단계 (또는 가정)를 수행하지 않는 것입니다. 그것이 구문 상으로는 정확하지만, 여전히 실행 중일 것입니다. 생각했던 것을 반환하지 마십시오.
-
답변 # 3
실수는 당신의 실수가 있다고 생각합니다
StrConv
당신은 더 나은 것을 가져야합니다
(i Mod Len(pass)) + 1)
그리고1에서m으로0을m으로 설정하면 마치 하나가되는 것처럼 보입니다. 한 걸음 더 나아가십시오.
1에서ubound로 이동하거나0에서ubound-1
으로 이동1 + ((i-1) mod len(Pass))
관련 자료
- Swift의 Regex는 다른 결과를 제공합니다
- python - TensorFlow를 사용한 Deep Learning에서 제공하는 코드의 결과가 책의 스냅 샷과 다른 이유
- scala - ()를 사용하거나 사용하지 않고 stringreverse를 호출하면 다른 결과가 제공됩니다
- Python의 Quantile Regression은 R과 다른 결과를 제공합니다
- excel - VBA 코드는 1 대의 컴퓨터에서 실행되지만 다른 컴퓨터에서는 구문 오류가 발생합니다
- 3DES, Java 코드 결과는 3des 온라인 도구 및 Oracle 데이터베이스 스크립트와 다른 결과를 생성합니다
- readline - 두 가지 다른 코드 아래에서 Java로 두 가지 다른 출력을 얻습니다
- excel - For 루프 기능은 작동하지 않지만 메시징 오류없이 동일한 결과를 제공합니다
- mysql - 하위 쿼리는 자체적으로 호출 될 때와 다른 결과를 반환합니다
- c++ - * char 배열을 문자열로 (두 번 실행 코드와 두 가지 다른 결과)
- MySQL - mysql - order by rand ()는 항상 동일한 결과를 제공합니다
- php - 다른 구조의 다차원 JSON 배열에 대한 MySQL 결과
- r - 다른 쿼리의 결과를 사용하는 dplyr의 "NOT IN"sql 명령
- php - MySQL CASE 문이 Workbench와 Angular에서 다른 결과를 반환합니다
- c# - 여러 숫자를 곱한 결과가 계산기에서 곱한 결과와 다른 이유는 무엇입니까?
- java - 아래 코드의 출력 결과가 내가 한 방식과 다른 이유
- javascript - 다른 결과를 얻는 필터링 된 데이터 인쇄
- C# Linq GroupBy ==> Class vs Anonymous class - C # Linq GroupBy ==> 클래스 대 익명 클래스 — 다른 결과
- Java 8 및 Java 13의 Mathpow ()는 다른 결과를 반환합니다
- sql server - datetime 열에 대해 다른 결과를 얻고 싶습니다
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- vue.js - axios를 사용하여 서버에 이미지를 업로드하는 방법
- python - 문자열에서 특정 문자 제거
문자열은 바이트가 아닌 문자로 구성되며 VB6 문자는 16 비트입니다.
XOR
때 충돌이 발생할 수 있습니다 유니 코드와의 변환은 유니 코드 --ASCII 경계에서 패턴을 제대로 전송하지 못할 수 있기 때문에 ASCII 도메인의 두 문자 세트.파일을 바이트 배열로 읽어야합니다. 텍스트를 파일로 읽거나 쓸 때 발생하는 유니 코드와의 변환을 피하면서 바이트 배열로 출력합니다. 여전히
XOR
를 사용할 수 있습니다StrConv
의 변수가 변환으로 인해 왜곡 되더라도 매번 같은 방식으로 왜곡되기 때문에 변수입니다.인코딩과 디코딩 사이에서 자국어 시스템을 변경하면
Pass
단계는 다른 'garbling'을 유발할 수 있으므로 실패 할 수 있습니다.