如何使用Python寫一個指令碼,能輸出該指令碼自身的MD5值?知乎使用者2021-01-23 14:04:16

沒有限制條件的話,直接開啟 argv[0] 就可以算 MD5 了。

#!/usr/bin/python3

import

hashlib

import

sys

with

open

sys

argv

0

],

‘rb’

as

selfsrc

print

hashlib

md5

selfsrc

read

())

hexdigest

())

輸出結果:

$ 。/selfsum。py

80a8e241515e133ad74000be03ec0ca6

$ md5sum selfsum。py

80a8e241515e133ad74000be03ec0ca6 selfsum。py

如何使用Python寫一個指令碼,能輸出該指令碼自身的MD5值?Belleve2021-01-24 08:46:26

CodeGolf 裡面有這個題,排名第一的答案是:

r

=

‘r=

%r

;import md5;print “MD5 sum of my source is: ”+md5。new(r

%%

r)。hexdigest()’

import

md5

print

“MD5 sum of my source is: ”

+

md5

new

r

%

r

hexdigest

()

其實就是 Quine 構造修改了一下。

如何使用Python寫一個指令碼,能輸出該指令碼自身的MD5值?匿名使用者2021-01-24 11:15:44

這題太簡單了,來個難點的:

如何構造一個字串,使其包含自身的MD5值?

如何使用Python寫一個指令碼,能輸出該指令碼自身的MD5值?知乎使用者2021-01-26 17:28:49

利用 Quine 改了一個, 足夠囉嗦 (檔案末尾有換行符):

import

hashlib

x

=

“import hashlib”

“”

“x = [”

“ ”

“]”

“”

“def quine(x):”

“ s = []”

“ for i in range(3):”

“ s。append(x[i])”

“ for i in range(17):”

“ s。append(x[3] + chr(34) + x[i] + chr(34) + ‘,’)”

“ for i in range(4, 17):”

“ s。append(x[i])”

“ return chr(10)。join(s) + chr(10)”

“”

“print(hashlib。md5(quine(x)。encode())。hexdigest())”

def

quine

x

):

s

=

[]

for

i

in

range

3

):

s

append

x

i

])

for

i

in

range

17

):

s

append

x

3

+

chr

34

+

x

i

+

chr

34

+

‘,’

for

i

in

range

4

17

):

s

append

x

i

])

return

chr

10

join

s

+

chr

10

print

hashlib

md5

quine

x

encode

())

hexdigest

())

如何使用Python寫一個指令碼,能輸出該指令碼自身的MD5值?狂徒歸來2021-01-29 20:05:07

自己讀自己的原始碼檔案,生成md5