回答編集履歴

3

追記

2018/10/11 08:13

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -67,3 +67,7 @@
67
67
  また、私はPHPのほうを殆ど知らないため、コードを変更する技量がありません。
68
68
 
69
69
  この為、C#のほうをPHPに寄せましたが、暗号化仕様としてどのような状態が正しいのか分かりませんので、出力されたバイナリファイルが正しいのかは分かりません。
70
+
71
+
72
+
73
+ ただ、どちらも読み込み時にテキストファイルとして1行づつ処理するのではなく、バイナリファイルとして開いて、1バイトづつ処理するほうがいいのではないかと思います。

2

修正

2018/10/11 08:13

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -58,7 +58,7 @@
58
58
 
59
59
  但し、最後の行が
60
60
 
61
- INSERT INTO `Area` VALUES (5,'4','フィールド4','00001.bmp');[EOF]
61
+ INSERT INTO Area VALUES (5,'4','フィールド4','00001.bmp');[EOF]
62
62
 
63
63
  と改行が無いパターンですと、C#のほうが強制で改行コードを入れますので、一致しなくなります。
64
64
 

1

検証を追記

2018/10/11 08:08

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -17,3 +17,53 @@
17
17
  ```
18
18
 
19
19
  と行が変わったら0から開始し使用するkeyがずれるんじゃないですかね?
20
+
21
+
22
+
23
+ ### 追記
24
+
25
+ 実際に試してみました。
26
+
27
+ まず、PHPのほうはockeghemさんが仰るとおり
28
+
29
+ ```PHP
30
+
31
+ $key = pack("c*", 0xB5, 0x1A, 0x3, 0xF3, 0x7F, 0x42, 0xD3);
32
+
33
+ ```
34
+
35
+ と変更しました。
36
+
37
+ C#のほうは
38
+
39
+ ```C#
40
+
41
+ foreach (String str in list)
42
+
43
+ {
44
+
45
+ offset = 0;
46
+
47
+ write.Write(XOR_EnCrypt(str));
48
+
49
+ write.Write(XOR_EnCrypt("\r\n"));
50
+
51
+ }
52
+
53
+ ```
54
+
55
+ と1行でoffsetをリセットし、改行コードを変更しました。
56
+
57
+ これにより、ファイルの最後が改行で終わるものに関しては一致しました。
58
+
59
+ 但し、最後の行が
60
+
61
+ INSERT INTO `Area` VALUES (5,'4','フィールド4','00001.bmp');[EOF]
62
+
63
+ と改行が無いパターンですと、C#のほうが強制で改行コードを入れますので、一致しなくなります。
64
+
65
+
66
+
67
+ また、私はPHPのほうを殆ど知らないため、コードを変更する技量がありません。
68
+
69
+ この為、C#のほうをPHPに寄せましたが、暗号化仕様としてどのような状態が正しいのか分かりませんので、出力されたバイナリファイルが正しいのかは分かりません。