OSDN Git Service

タグを打ち忘れていたついでに、html版ドキュメントを追加しました。
[ring-lang-081/ring.git] / docs / ja-jp / build / html / _sources / secfunc.txt
1 .. index:: 
2         single: セキュリティとインターネット関数; はじめに
3
4 ================================
5 セキュリティとインターネット関数
6 ================================
7
8 ハッシュ、暗号化、および復号化に関するセキュリティとインターネット関数について説明します。
9
10 この関数の使用前に openssllib.ring ライブラリを読み込みます。
11
12 .. code-block:: ring
13
14         load "openssllib.ring"
15         # OpenSSL 関数の使用
16
17 * MD5()
18 * SHA1()
19 * SHA256()
20 * SHA512()
21 * SHA384()
22 * SHA224()
23 * Encrypt()
24 * Decrypt()
25 * Randbytes()
26
27 この関数の使用前に internetlib.ring ライブラリを読み込みます。
28
29 .. code-block:: ring
30
31         load "internetlib.ring"
32         # インターネット関数の使用
33
34 * Download()
35 * SendEmail()
36
37 .. index:: 
38         pair: セキュリティとインターネット関数; MD5()
39
40 MD5() 関数
41 ==========
42
43 MD5() 関数は MD5 ハッシュ値を計算します。
44
45 文法:
46
47 .. code-block:: ring
48
49         MD5(cString) ---> 文字列 cString の MD5 ハッシュ値を有する文字列です。
50
51 用例:
52
53 .. code-block:: ring
54
55         see "md5('happy') = " + md5("happy") + nl +
56             "md5('Hello') = " + md5("Hello") + nl
57
58 実行結果:
59
60 .. code-block:: ring
61
62         md5('happy') = 56ab24c15b72a457069c5ea42fcfc640
63         md5('Hello') = 8b1a9953c4611296a827abf8c47804d7
64
65 .. index:: 
66         pair: セキュリティとインターネット関数; SHA1()
67
68 SHA1() 関数
69 ===========
70
71 SHA1() 関数は SHA1 ハッシュ値を計算します。
72
73 文法:
74
75 .. code-block:: ring
76
77         SHA1(cString) ---> 文字列 cString の SHA1 ハッシュ値を有する文字列です。
78
79 用例:
80
81 .. code-block:: ring
82
83         see "sha1('hello') : " + sha1("hello") + nl +
84             "sha1('apple') : " + sha1("apple") + nl
85
86 実行結果:
87
88 .. code-block:: ring
89
90         sha1('hello') : aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
91         sha1('apple') : d0be2dc421be4fcd0172e5afceea3970e2f3d940
92
93 .. index:: 
94         pair: セキュリティとインターネット関数; SHA256()
95
96 SHA256() 関数
97 =============
98
99 SHA256() 関数は SHA256 ハッシュ値を計算します。
100
101 文法:
102
103 .. code-block:: ring
104
105         SHA256(cString) ---> 文字列 cString の SHA256 ハッシュ値を有する文字列です。
106
107
108 用例:
109
110 .. code-block:: ring
111
112         see "sha256('hello') : " + sha256("hello") + nl +
113             "sha256('apple') : " + sha256("apple") + nl
114
115 実行結果:
116
117 .. code-block:: ring
118
119         sha256('hello') : 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
120         sha256('apple') : 3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b
121
122 .. index:: 
123         pair: セキュリティとインターネット関数; SHA512()
124
125 SHA512() 関数
126 =============
127
128 SHA512() 関数は SHA512 ハッシュ値を計算します。
129
130 文法:
131
132 .. code-block:: ring
133
134         SHA512(cString) ---> 文字列 cString の SHA512 ハッシュ値を有する文字列です。
135
136 用例:
137
138 .. code-block:: ring
139
140         see "sha512('hello') : " + sha512("hello") + nl +
141             "sha512('apple') : " + sha512("apple") + nl +
142             "sha512('hello world') : " + sha512("hello world") + nl
143
144 実行結果:
145
146 .. code-block:: ring
147
148         sha512('hello') : 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673c
149         a72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043
150         sha512('apple') : 844d8779103b94c18f4aa4cc0c3b4474058580a991fba85d3ca698a0bc9e52
151         c5940feb7a65a3a290e17e6b23ee943ecc4f73e7490327245b4fe5d5efb590feb2
152         sha512('hello world') : 309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca8
153         6d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f
154
155 .. index:: 
156         pair: セキュリティとインターネット関数; SHA384()
157
158 SHA384() 関数
159 =============
160
161
162 SHA384() 関数は SHA384 ハッシュ値を計算します。
163
164 文法:
165
166 .. code-block:: ring
167
168         SHA384(cString) ---> 文字列 cString の SHA384 ハッシュ値を有する文字列です。
169
170 用例:
171
172 .. code-block:: ring
173
174         see "sha384('hello') : " + sha384("hello") + nl +
175             "sha384('apple') : " + sha384("apple") + nl +
176             "sha384('hello world') : " + sha384("hello world") + nl
177
178 実行結果:
179
180 .. code-block:: ring
181
182         sha384('hello') : 59e1748777448c69de6b800d7a33bbfb9ff1b463e44354c3553bcdb9c666fa
183         90125a3c79f90397bdf5f6a13de828684f
184         sha384('apple') : 3d8786fcb588c93348756c6429717dc6c374a14f7029362281a3b21dc10250
185         ddf0d0578052749822eb08bc0dc1e68b0f
186         sha384('hello world') : fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcb
187         b83578b3e417cb71ce646efd0819dd8c088de1bd
188
189 .. index:: 
190         pair: セキュリティとインターネット関数; SHA224()
191
192 SHA224() 関数
193 =============
194
195 SHA224() 関数は SHA224 ハッシュ値を計算します。
196
197 文法:
198
199 .. code-block:: ring
200
201         SHA224(cString) ---> 文字列 cString の SHA224 ハッシュ値を有する文字列です。
202
203 用例:
204
205 .. code-block:: ring
206
207         see "sha224('hello') : " + sha224("hello") + nl + 
208             "sha224('apple') : " + sha224("apple") + nl +
209             "sha224('hello world') : " + sha224("hello world") + nl
210
211 実行結果:
212
213 .. code-block:: ring
214
215         sha224('hello') : ea09ae9cc6768c50fcee903ed054556e5bfc8347907f12598aa24193
216         sha224('apple') : b7bbfdf1a1012999b3c466fdeb906a629caa5e3e022428d1eb702281
217         sha224('hello world') : 2f05477fc24bb4faefd86517156dafdecec45b8ad3cf2522a563582b
218
219 .. index:: 
220         pair: セキュリティとインターネット関数; Encrypt()
221
222 Encrypt() 関数
223 ==============
224
225 Encrypt() 関数は Blowfish アルゴリズム法でデータを暗号化します。
226
227 文法:
228
229 .. code-block:: ring
230
231         Encrypt(cString, cKey, cIV) ---> 暗号化された文字列
232
233 .. index:: 
234         pair: セキュリティとインターネット関数; Decrypt()
235
236 Decrypt() 関数
237 ==============
238
239 Decrypt() 関数は Encrypt() 関数で暗号化されたデータを復号化します。
240
241 文法:
242
243 .. code-block:: ring
244
245         Decrypt(cCipher, cKey, cIV) ---> 復号化された文字列
246
247 .. index:: 
248         pair: セキュリティとインターネット関数; 用例
249
250 暗号化と復号化の用例
251 ====================
252
253 この用例は Encrypt() および Decrypt() 関数の用法です。
254
255 いずれの関数も Blowfish アルゴリズム法を使用しています。
256
257 .. code-block:: ring
258
259         See "Enter a string : " give cStr
260         list = 0:15  cKey=""    for x in list cKey += char(x) next
261         list = 1:8   cIV = ""   for x in list cIV += char(x) next
262         cStr = Encrypt(cStr,cKey,cIV) 
263         See "Cipher Text    : " + cStr + nl +
264             "Plain Text     : " + Decrypt(cStr,cKey,cIV) + nl
265
266 通常の for ループで同じ用例を記述できます。
267
268 .. code-block:: ring
269
270         See "Enter a string : " give cStr
271
272         cKey=""                         # 16 バイト
273         for x = 0 to 15
274                 cKey += char(x) 
275         next
276
277         cIV = ""   
278         for x = 1 to 8
279                 cIV += char(x) 
280         next
281
282
283         cStr = Encrypt(cStr,cKey,cIV)
284         See "Cipher Text    : " + cStr + nl +
285             "Plain Text     : " + Decrypt(cStr,cKey,cIV) + nl
286
287 また、文字列でパスワードと IV を直接記述することもできます。
288
289 .. code-block:: ring
290
291         See "Enter a string : " give cStr
292
293         # 注意: 推測されやすく暗号強度の低い単純なパスワードを使用しないでください!
294         cKey = "1234567890@#$%^&"               
295         cIV  = "87654321"                       
296
297         cStr = Encrypt(cStr,cKey,cIV)
298         See "Cipher Text    : " + cStr + nl +
299             "Plain Text     : " + Decrypt(cStr,cKey,cIV) + nl
300
301
302 .. index:: 
303         pair: セキュリティとインターネット関数; ファイルのハッシュ
304
305 ファイルのハッシュ
306 ==================
307
308 この用例はハッシュ関数でファイルのハッシュ値を計算する方法です。
309
310 .. code-block:: ring
311
312         cStr = read("myapp.exe")
313         see "Size : " + len(cStr) + nl +
314             "md5 : " + md5(cStr) + nl +
315             "sha1 : " + sha1(cStr) + nl +
316             "sha256 : " + sha256(cStr) + nl +
317             "sha224 : " + sha224(cStr) + nl +
318             "sha384 : " + sha384(cStr) + nl +
319             "sha512 : " + sha512(cStr) + nl
320
321 実行結果:
322
323 .. code-block:: ring
324
325         Size : 58079876
326         md5 : 762eee15d8d2fd73b71ea52538b28667
327         sha1 : 9212c0c7258bad89a62bd239e1358a9276a9d070
328         sha256 : 7d6724e69b6c553da749ba31b6185dddc965129b64d9e9bf3de88f67df3b1cdc
329         sha224 : 5a9c8a7d662bce4f880ba94f90a79362b672528b9efd5abc718c7a3d
330         sha384 : 18e23f973abedbeb3981c423f12aeadecf96f9c6fb28aeabe3be4c484f8540afcc3861b
331         b370ce2b59cf3c99c130b856b
332         sha512 : da3d5e997d06f8b2a7a9964b77f7d82eedb76b245c611082c1639f83f51d83880bcd08f
333         cd53dcab1167bdca0b82fec5071971ac17c76479d76985ced4ab0d18e
334
335 .. index:: 
336         pair: セキュリティとインターネット関数; RandBytes()
337
338 Randbytes() 関数
339 ================
340
341 Randbytes() 関数は擬似乱数バイト列を生成します。
342
343 文法:
344
345 .. code-block:: ring
346
347         Randbytes(nSize) ---> 文字列は乱数のバイト列を有しています (バイト列数 = nSize)。
348
349 用例:
350
351 .. code-block:: ring
352
353         salt =  randbytes(32) 
354         password = "SecretPassWord@$%123"
355         see salt + nl
356         see sha256("test" + salt) + nl
357
358 .. index:: 
359         pair: セキュリティとインターネット関数; Download()
360
361 Download() 関数
362 ===============
363
364 指定された URL からファイルをダウンロードします。
365
366 文法:
367
368 .. code-block:: ring
369
370         Download(cURL) ---> 文字列はサーバーの応答を有しています。
371
372 用例:
373
374 .. code-block:: ring
375
376         cStr= download("http://doublesvsoop.sourceforge.net/")
377         see cStr
378         write("download.txt",cStr)
379
380 .. index:: 
381         pair: セキュリティとインターネット関数; SendEmail()
382
383 SendEmail() 関数
384 ================
385
386 電子メール送信します。
387
388 文法:
389
390 .. code-block:: ring
391
392         SendEmail(cSMTPServer,cEmail,cPassword,cSender,cReceiver,cCC,cTitle,cContent)
393
394 用例:
395
396 .. code-block:: ring
397
398         See "Send email..." + nl
399         sendemail("smtp://smtp.gmail.com:587",
400                 "email@gmail.com",
401                 "password",
402                 "email@gmail.com",
403                 "somebody@yahoo.com",
404                 "somebodyelse@yahoo.com",
405                 "Sending email from Ring",
406                 "Hello
407                  How are you?
408                  Are you fine?
409                  Thank you!
410                  Greetings,
411                  Mahmoud")
412         see "Done.." + nl