Net::DNS 1.22中DS记录调用string/print出现随机字符问题
Net::DNS 1.22中DS记录string/print方法输出额外字符的原因
使用Net::DNS 1.22版本的Net::DNS::RR类时,调用Net::DNS::RR->string或Net::DNS::RR->print输出DS记录时会出现一串看似随机的短横线分隔字符,但调用Net::DNS::RR->plain方法输出正常。
测试代码如下:
#!/usr/bin/perl use strict; use warnings; use Net::DNS; my @rr = rr("gov.uk", "DS"); print STDERR $_->plain . "\n" foreach (@rr); print STDERR $_->string . "\n" foreach (@rr);
输出结果:
gov.uk. 300 IN DS 17539 8 2 2f0a0a65db9e930f5b2c0425f67df66416c076124652a281d9a8ffa773828f57 gov.uk. 300 IN DS 695 8 2 7277592dbd8993bde70704dbabd30afdbb85057e658ef1428f18f5d9a534bce0 gov.uk. 300 IN DS ( 17539 8 2 2f0a0a65db9e930f5b2c0425f67df66416c076124652a281d9a8ffa773828f57 ) ; xerob-pidyk-hukan-vagab-zokod-seced-hetal-tutok-gohys-bityc-ducih-demom-cekup-mazip-lasem-difoh-lixex gov.uk. 300 IN DS ( 695 8 2 7277592dbd8993bde70704dbabd30afdbb85057e658ef1428f18f5d9a534bce0 ) ; xisil-lykud-tazum-nagar-tynib-licot-repat-fydoz-tivam-hicul-vunim-vosag-dofic-metyt-nunuf-gezev-byxex
原因解析
这串字符是DS记录摘要的Base32编码助记词,是Net::DNS模块为方便人类识别、记忆哈希值而添加的注释内容:
string和print方法生成的是符合BIND配置文件格式的输出,该格式支持添加注释;- 模块会自动将DS记录的十六进制哈希值转换成类似zbase32编码的助记词串,以注释形式附加在输出末尾;
plain方法的定位是输出简洁的机器可读格式,因此不会包含这类用于人工核对的注释性内容。
这类助记词的设计目的是降低管理员手动比对长串十六进制哈希值时出错的概率,属于模块的人性化功能,并非Bug。
内容的提问来源于stack exchange,提问作者Vandan Adhvaryu
相关产品推荐
相关产品推荐

