私はCの教祖ではなく、助けが必要です。運BUこの質問にいくつかの他の回答を読むためにすでに試みました'int'型を暗黙的に 'byte'に変換することはできません。コンパイル時に明示的な変換が存在します(キャストがありませんか?)
baseKey = (15 + baseKey * 250) * baseKey + 19;
baseKey2 = (121 - baseKey2 * 92) * baseKey2 + 109;
pDst[i] = (src[i]^171);
dst[i] = (pSrc[i]^171);
:
{
private ushort InCounter;
private ushort OutCounter;
private byte[] cipherKey1 = new byte[256];
private byte[] cipherKey2 = new byte[256];
public AuthCipher()
{
byte baseKey = 157;
byte baseKey2 = 98;
for (int i = 0; i < 256; i++)
{
this.cipherKey1[i] = baseKey;
this.cipherKey2[i] = baseKey2;
baseKey = (15 + baseKey * 250) * baseKey + 19;
baseKey2 = (121 - baseKey2 * 92) * baseKey2 + 109;
}
this.InCounter = 0;
this.OutCounter = 0;
}
public unsafe void Encrypt(byte* src, int srcOffset, byte[] dst, int dstOffset, int length)
{
fixed (byte* pDst = &dst[dstOffset])
{
for (int i = srcOffset; i < srcOffset + length; i++)
{
pDst[i] = (src[i]^171);
pDst[i] = (byte)(pDst[i] >> 4 | (int)pDst[i] << 4);
byte* expr_39 = pDst + i;
*expr_39 ^= this.cipherKey2[this.InCounter >> 8];
byte* expr_51 = pDst + i;
*expr_51 ^= this.cipherKey1[(int)(this.InCounter & 255)];
this.InCounter += 1;
}
}
}
public unsafe void Decrypt(byte[] src, int srcOffset, byte* dst, int dstOffset, int length)
{
fixed (byte* pSrc = &src[srcOffset])
{
for (int i = dstOffset; i < dstOffset + length; i++)
{
dst[i] = (pSrc[i]^171);
dst[i] = (byte)((int)dst[i] << 4 | dst[i] >> 4);
byte* expr_35 = dst + i;
*expr_35 ^= this.cipherKey2[this.OutCounter >> 8];
byte* expr_4C = dst + i;
*expr_4C ^= this.cipherKey1[(int)(this.OutCounter & 255)];
this.OutCounter += 1;
}
}
}
}
エラーがでポップ: 私はこのコードを持っています。 いずれかは、おそらく、私はそれを修正する方法を知っていただきました!間違った:)
任意の助けが理解されるであろう理解で私を助けることができれば。あなたは255よりも大きい店舗番号にbyte
を使用することはできません
少なくとも、あなたが使っているどの言語を知っています。 – LogicStuff
ちょっとしたメモとして:あなた自身の暗号化/復号化コードを振るのではなく、既存のよく知られている(よく分析された)実装を使用するのは良いことです。 'expr_39'など、ここで私はあなたが実際にリバースエンジニアリングしている、これをどこからかと思わせる... –