나는 내가 믿는 행성 소스 코드에서 발견 한 복어 클래스를 가지고있다. 내 서버로 전송되는 문자열을 암호화하고 있습니다. 그런 다음 데이터 arrvial에서 문자열을 해독하려고하면 오류가 계속 발생합니다. 나는 무슨 일이 일어나고 있는지 또는 내가 뭘 잘못하고 있는지 모르겠습니다. 텍스트 상자에서 훌륭한 암호화 및 암호 해독 기능을하지만 어떤 이유로 winsock을 통해 작동하지 않습니다. 어쩌면 누군가가 나를 알아낼 수 있습니다.Blowfish 암호화를 Winsock 데이터에 어떻게 추가 할 수 있습니까?
내 클라이언트 연결 이벤트에있는 코드입니다. 클라이언트가 연결하고 서버가 나에게
런타임을 말하는 오류가 제공하는 데이터를수록 나는 즉시 내 데이터 도달
Dim crypt As clsBlowFish
Set crypt = New clsBlowFish
Dim strPrivate As String
Dim strEncrypted as string, strDecrypted as string
strPrivate = "aDq&s3kUsvVKNm-dRCF2-XJC%5j&%hL5*S5=bu%ZFLsc2D2"
sOCk.GetData strData, vbString
strEncrypted = strData
Call crypt.BlowFish(strPrivate)
Call crypt.StringDecrypt(strEncrypted, strDecrypted)
을이이 서버 측에
Dim crypt As clsBlowFish
Set crypt = New clsBlowFish
Dim strPrivate As String
Dim strUser As String, strUserEncrypted As String
strPrivate = "aDq&s3kUsvVKNm-dRCF2-XJC%5j&%hL5*S5=bu%ZFLsc2D2"
Call crypt.BlowFish(strPrivate)
Call crypt.StringEncrypt(txtUsername.Text, strUserEncrypted)
sOCk.SendData Chr(&H1) & "ENTER" & strUserEncrypted & "CHAT"
오류 '-2147218101 (80040d4b)':
해독 할 문자열의 크기를 8로 나눌 수 있어야합니다.
보내는 데이터가 정상적으로 작동하는 것 같습니다. 암호화 된 텍스트를 메시지 박스에 표시하기 전에 메시지를 표시하고 암호화 된 텍스트를 보낸 것처럼 패킷을 암호화하고 암호화하여 해당 문제가 서버 측에있는 것처럼 보여줍니다.
텍스트 상자를 사용하여 암호화하고 해독하는 것과 똑같은 코드를 사용했지만 완벽하게 작동했지만 winsock을 통해 전송하는 것이 효과가없는 것 같습니다. 데이터를 제대로받지 못했을 수 있습니까? 편집
: 감사 레미 Lebeau
나는과 같이 모든 텍스트를 암호화하여 고정.
전화 crypt.StringEncrypt (대하 (& H1) &는 "채팅"& txtUsername.Text &을 "ENTER", strUserEncrypted)
첫 번째 패킷에있는 모든 패킷을 수신해야합니다. 첫 번째 패킷은 전송 된 패킷이므로 하나의 패킷에 모두 포함되어 있습니까? 작은 패킷 일지라도 별도의 패킷에 도착한다는 말입니까? – FrostByte
Nevermind 나는 그 중 일부만 암호화 할 때 전체 패킷을 하나의 암호화 된 패킷으로 구문 분석하려고한다는 것을 이해합니다. 그것이 잘못된 곳으로, 암호화 된 모든 것을 원했습니다. 나는 내가 한 일을 눈치 채지 못했습니다. 그 점을 지적 해 주셔서 감사합니다. 나머지 부분을 암호화에 추가했는데 첫 번째 시도가 성공했습니다. – FrostByte
내가 말했듯이 "서버는 현재 정확한 순간 ** 소켓 버퍼 **에서 사용 가능한 원시 데이터를 읽습니다." 그래서 예, 고객의 메시지는 여러 번 읽어 들일 수 있습니다. 그 점을 고려해야합니다. –