备忘录状况
这份文档为Internet社区指定为Internet标准(轨迹)协议,并且为进一步改进需要讨论和建议。这份协议的标准化状态和状况请参阅"Internet官方协议标准(InternetOfficialProtocolStandards)"(STD1)的当前版。这份备忘录的分发不受限制。
版权声明
Copyright(C)TheInternetSociety(1998).版权所有.
目录
目录 2
0.译者的话 2
1.0摘要 3
2.0概述 3
3.0介绍 3
4.0需求术语 4
5.0安全哈希函数(SECUREHASHFUNCTION) 4
6.0一次口令的产生 5
7.0一次口令的验证 7
8.0一次口令更改 7
9.0避免竞争攻击 8
10.0安全考虑 9
11.0确认 9
12.0参考文献 9
13.0作者的地址 10
附录A-安全哈希算法界面 11
附录B-可替换字典算法 13
附录C-OTP认证例子 14
附录D-六词和二进制格式之间转换的字典 17
完整版权声明 23
0.译者的话
译者在翻译这份文档的时候,采取直译的方式,尽量保证原文的原意。同时也尽量考虑了中文的语义顺畅,便于中文读者阅读,译者在译文中加入了一些修饰语和译注,修饰语一般在括号中写明,而译注均有“译者注”字样。由于译者翻译本篇文挡时间有限,译文中一定会存在许多理解有误、用词不当之处,欢迎读者来信指正,共同学习。
1.0摘要
这篇文档描述一次口令认证系统(one-timepassWordauthenticationsystem)(OTP)。系统提供对系统访问(login)的认证以及针对基于重放获取可再用口令(replayingcapturedreusablepasswords)之上的被动攻击的安全认证需求的其他应用。OPT从S/KEY演化而来(S/KEY是Bellcore的商标)。一次口令系统被Bellcore(贝尔通讯研究所)释放,在参考[3]和[5]中描述。
译者注:one-timepassword称为一次性口令,在本文中称为一次口令。
2.0概述
一种互联网计算系统的攻击形式是监听网络连接以获得认证信息,例如合法用户的登录IDs和口令。一旦这个信息被捕捉,它就能获得用于以后对系统的访问(权)。一次口令系统被设计为还击这种攻击类型,称作“重播攻击”[4]("replayattack")。
在本文档中描述的认证系统使用一秘密通行短语(pass-phrase)去衍生一系列一次口令(单独使用的)。使用这个系统,用户的秘密通行短语任何时候(例如认证过程中或者通行短语更改过程中)都不在网络中传输。因此,对重放攻击是非脆弱的。附加的安全通过无秘密信息需要被存储在任何系统中的特征被提供,包括被保护的服务。
OTP系统避免针对认证子系统受到外部被动攻击的危害。它不能阻止网络监听去获得私有信息的存取以及不能提供避免或者“社会工程”("socialengineering")或者主动攻击(activeattacks)[9]的危害的保护。
3.0介绍
在OPT一次口令系统的操作中存在两个实体。发起者(generator)必须从用户的秘密通行短语和从服务的质疑(challenge)中提供的信息产生适当的一次口令。服务必须发送包括给发起者适当的产生参数的质疑,必须验证接收的一次口令,必须存储接收到的最近有效的一次口令,以及必须存储相应的一次口令序列数(sequencenumber)。同时服务必须也便于以安全的方式对用户的秘密通行短语的改变。
OTP系统发起者传送用户的秘密通行短语,随后接收到从服务质疑的一部分的(随机)种子(seed),通过安全哈希函数(hashfunction)多次叠代运算产生一个一次口令。每一次成功的验证之后,安全哈希函数叠代的次数减少1。这样,唯一序列的口令产生了。服务通过计算安全哈希函数一次和比较先前从发起者接收到的一次口令来验证发起者的一次口令。这个技术由LeslieLamport[1]第一次提出。
4.0需求术语
在这篇文档中,用于定义每一个非凡需求的重要意义的词通常大写。这些词是:
-MUST
这个词或者形容词"REQUIRED"表示这项是具体指定的绝对需求。
-SHOULD
这个词或者形容词"RECOMMENDED"表示在特定的环境中存在有效的理由去忽略这项,但是完整的含义应该被理解以及在做出不同的进程之前要仔细衡量。
-MAY
这个词或者形容词"OPTIONAL"表示这项是真正可选的。例如,一个销售商可以选择包括这项,因为市场的需求或者增强产品(的功能);而另一个销售商可以忽略同一个选项。
5.0安全哈希函数(SECUREHASHFUNCTION)
OTP系统的安全依靠于安全哈希函数的不可逆性。这样的函数必须是正向易于计算的,但是反过来计算不可行。
这里有三个这样的哈希算法接口被定义,RonaldRivest的MD4[2]和MD5[6],以及NIST的SHA[7]。所有服务和发起者之间一致的工具必须(MUST)支持MD5。他们应该(SHOULD)支持SHA和可以(MAY)也支持MD4。明显的,发起者和服务之间为了互操作必须使用同样的算法。其他哈希算法可以通过公开适当的接口为这个系统的使用具体指定。
上面列出的安全哈希算法有其可以接收任意长度的输入和产生固定大小输出的特性。OPT系统使用附录A中定义的算法将输出折叠为64bit。64bit也是一次口令的长度。当必要时这个程度可以确认对安全是足够长的以及对于手工输入是足够短的(参见下面,输出的格式)。
6.0一次口令的产生
这部分描述一次口令的产生。这个处理过程由所有输入被组合在一起的初始化步骤、安全哈希函数被应用指定次数的运算步骤,和64bit一次口令被转化为人类可读格式的输出函数组成。
附录C包含给定输入的集合的输出例子。它提供了证实这些算法应用的表达实现。
初始化步骤
原则上,用户的安全通行短语可以是任何长度。为了减少来自例如穷举搜索或者字典攻击的危险,通讯短语字符串必须(MUST)至少包含10个字符(参见下面的输入格式)。所有工具必须(MUST)支持至少63个字符的通行短语。安全通行短语通常,但不被要求,是由用户提供的原文信息。
在这个步骤中,通行短语与从服务方以明文方式传递过来的种子(seed)连接在一起。这个非安全(non-secret)种子答应客户在多个机器上(使用不同的种子)使用同样的安全通行短语以及通过改变种子安全地再循环使用他们的安全通行短语。
这个连接的结果通过使用附录A中列举的安全哈希函数算法之一,然后产生64bit输出。
计算步骤
一系列一次口令通过应用对初始化步骤(称为S)的输出多次安全哈希函数运算产生。也就说,第一个一次口令通过将S传递到由用户指定次数(N次)的安全哈希函数运算产生。下一个一次口令通过传递S到安全哈希函数N-1次运算产生。监视一次口令传输的监听者不能产生下一个需要的口令,因为要做到这些就意味着哈希函数的逆运算。
输入的格式
安全通行短语仅被OTP发起者看到。为了答应发起者之间的可交互性,所有的发起者必须(MUST)支持10到63字符长度的安全通行短语。执行工具可以(MAY)支持更长的通行短语,但是这样的工具存在与仅支持短通行短语的工具之间失去交互性。
种子必须(MUST)由纯正的字母数字字符(alphanumericcharacters)组成以及在长度上为16字符长。种子是一串必须(MUST)不能包含空格(blanks)和应该由严格的从来自ISO-646内部编码集合(ISO-646InvariantCodeSet)的字母数字字符组成的字符串。种子必须(MUST)是大小写无关的以及必须(MUST)是在处理之前内部转换为小写。
序列号和种子一起组成一个大的数据单元称为挑战(challenge)。挑战作为从安全通行短语计算正确的一次口令需要的参数提供给发起者。挑战必须(MUST)是标准语法以便自动产生在上下文中能识别的挑战以及提取这些参数。挑战的语法如下:
otp-<algorithmidentifier><sequenceinteger><seed>
三个标志段(tokens)必须(MUST)以空格分开(可以定义为任何数量的空格和/或制表符tabs)和整个挑战字符串必须(MUST)以或者是空格或者一新行结束。字符串"otp-"必须(MUST)为小写。算法标识符是大小写敏感的(已知存在的标识符都是小写),以及种子是大小写不敏感的并且在使用之前转换为小写。假如额外的算法被定义,适当的标识符(短的,但是没有限制为三或者四个字符)必须被定义。当前定义的算法标识符是:
md4MD4MessageDigest
md5MD5MessageDigest
sha1NISTSecureHashAlgorithmRevision1
一个OTP挑战例子是:otp-md5487dog2
输出的格式
上面处理过程产生的一次口令在长度上为64bit。输入一个64bit数字是困难的并且轻易出错的过程。一些产生器插入口令到输入流中和另外一些对于“剪切和粘贴”的系统使其有效。仍然有一些其他的布置(arrangements)需要一次口令手工输入。OTP系统设计为易于手工输入而没有妨碍自动的方法。因此一次口令可以(MAY)转换为,和所有服务必须(MUST)有能力接受的,仅使用从ISO-646IVCS字符集中的六个(1到4个字母letter)简单类型词(word)的序列。每个词从2048个词的字典中选取;每个词为11bit,所有一次口令可以被编码。
在这个编码中两个附加位(bits)用于存储校验和(checksum)。密钥的64bits被分裂为一对bits,然后这些对(pairs)被加和在一起。这个和(sum)的两个最低有效位在随着和(sum)的最低有效位作为最低位编码的六词(word)序列的最后两位(bits)被编码。所有OTP产生器必须(MUST)计算这个校验和以及所有OTP服务必须(MUST)作为解码(decoding)这个一次口令的代表操作的一个部分显式的验证这个校验和。
产生六词格式(six-wordformat)的产生器必须(MUST)以单空格作为分隔的大写形式展示。所有服务必须(MUST)接受六词格式而忽略大小写和用作分隔的空格。下面两行表示同一个一次口令。第一行作为从产生器输出和服务的输入是有效的,第二行仅作为手工输入到服务是有效的。
OUSTCOATFOALMUGBEAKTOTE
oustcoatfoalmugbeaktote
互操作要求所有的OTP服务和产生器使用相同的字典。标准字典起初在其描述在RFC1760[5]中的"S/KEYOneTimePasswordSystem"明确指定。
为了便于小的产生器的实现(implementation),对于一次口令的表示十六进制输出是一个可选择的表示。所有服务软件的实现必须(MUST)接受同六词格式一样的大小写不敏感的十六进制(数字)。十六进制数字可以由空格分隔,所以服务要求(REQUIRED)忽略所有的空格。假如表示是通过空格分开的,首位的零必须保留。十六进制格式的例子如下:
Representation(表示)Value(值)
3503785b369cda8b0x3503785b369cda8b
e5cca1b87c13096b0xe5cca1b87c13096b
C74890F4277BA1CF0xc74890f4277ba1cf
479A68284C9D01BC0x479a68284c9d01bc
除了接受六词和十六进制的64bit一次口令编码之外,服务应该(SHOULD)接受在附录B中描述的可替换的字典编码。在这个编码中的六个词一定(MUST)不能与在标准字典词的集合中重叠(overlap)。为了避免十六进制表示的含糊不清(ambiguity),在可替换字典中的词必须(MUST)不能仅由字母A-F构成。这样编码的解码词不需要任何可替换字典使用的知识,所以任何可选字典的可接受暗含着所有字典的可接受。在可替换字典中的词是大小写敏感的。产生器和服务必须(MUST)在处理这些词的过程中保护大小写。
总的来说,所有兼容的服务必须(MUST)接受使用标准字典(RFC1760和附录D)的六词输入,必须(MUST)接受十六进制编码,和应该(SHOULD)接受使用可替代字典技术(AlternativeDictionarytechnique)(附录B)的六词输入。一次口令的十六进制编码看上去像一个有效的六词标准字典编码是有很小的可能性的,所有工具(implementations)必须(MUST)使用下列模式(scheme),假如一个六词编码的一次口令是有效的,它被接受。否则假如一次口令可以作为十六进制被解释,和编码是有效的,那么它被接受。
7.0一次口令的验证
正如上文描述的一个期望OTP验证需求的服务系统的应用发送一个OTP挑战。从这个挑战和安全通行短语给定参数,发起者能计算(或者查找)通过服务被验证的一次口令。
服务系统有一个数据库,包含每一个用户,从最后成功验证的一次口令或者新近初始化的第一个OTP序列。为了验证用户,服务解码从发起者接受到的一次口令为64-bit密钥并且然后这个密钥通过安全哈希函数一次。假如这个操作的结果匹配存储的先前OTP,验证是成功的和接受的一次口令被存储为将来使用。
8.0一次口令更改
由于哈希函数应用的数目通过产生器每次减少1执行,在一些点上用户必须重新初始化系统,否则不能够进行验证。
尽管一些计算站(installations)可能不答应用户初始化远端,应用工具必须(MUST)提供一种方法去做,而不泄露用户的安全通行短语。一种方法是通过明确指定第一个一次口令的方式提供一个重新初始化的序列。
当一次口令序列被重新初始化的时候,工具必须(MUST)验证种子或者通行短语被更换。计算站应该(SHOULD)不鼓励任何以明文的方式在网络上发送安全通行短语的操作,因为这样的行为失去了一次口令的概念。
工具可以(MAY)为[重新]初始化使用下列的技术:
o用户选择一个新的种子和哈希计数(count)(默认的值可以被提供)。用户提供这些,然后相应产生一次口令,对于主机系统。
o用户也可以(MAY)作为错误检查对count-1次产生相应的一次口令。
o用户应该(SHOULD)针对原有的种子和原有的哈希计数产生一次口令为了保护空闲终端(idleterminal)或者工作站(这个暗含着当计数是1的时候,用户能够登陆但是不能修改种子或者计数)。
将来明确指定的协议可以被定义,对于所有的主机和产生器将能够答应平滑的和也许自动的互操作的重新初始化。
9.0避免竞争攻击
所有一致服务工具必须(MUST)在避免本部分中描述的竞争状况的危害。抵御这个攻击的防护是概括的;工具可以(MAY)使用这个方法(approach)或者可以(MAY)选择一个可选择的防御。
对于一个攻击者去监听大多数的一次口令,猜测剩余的,然后迅速传递合法用户完成授权是可能的。多数针对六词格式的最后一个词进行猜测更可能成功。
一个可能的防御是防止用户同时开始多个认证会话。这个意味着一次合法用户已经初始化的认证,攻击者将被阻塞直到第一次认证处理完成。在这个方法(approach)中,为防止拒绝服务攻击(denialofserviceattack)超时时间是必须的。
10.0安全考虑
这篇文档讨论针对简单口令系统[4]的通过限定已经使用的监听/重放攻击的危险改善安全的认证系统。
OTP系统的使用仅提供避免被动监听/重放攻击危害的保护。它没有提供对于传输数据的保密,以及它没有提供避免例如在当前Internet[9]上已知存在的会话拦劫(sessionhijacking)的主动攻击的危害保护。IPSecurity(IPsec)的使用,参见[10],[11],和[12]针对TCP会话拦劫的保护被推荐。
OTP系统对主机系统的成功保护依靠于使用的安全哈希函数不可逆性(non-invertability)。据我们所知,没有哈希算法已经被攻破,但是通常认为MD4没有MD5安全强度高。假如服务支持多种哈希算法,它(系统的安全)仅同最弱算法的安全强度。
11.0确认
在OTP的认证观念(idea)由LeslieLamport[1]第一次提出建议。Bellcore(贝尔通讯研究所)的S/KEY系统,其是OTP的起源,由PhilKarn提出建议,其也发表了大部分的Bellcore参考实现(implementation)。
12.0参考文献
[1]LeslieLamport,"PasswordAuthenticationwithInsecure
Communication",CommunicationsoftheACM24.11(November
1981),770-772
[2]Rivest,R.,"TheMD4Message-DigestAlgorithm",RFC1320,
April1992.
[3]NeilHaller,"TheS/KEYOne-TimePasswordSystem",Proceedings
oftheISOCSymposiumonNetworkandDistributedSystem
Security,February1994,SanDiego,CA
[4]Haller,N.,andR.Atkinson,"OnInternetAuthentication",
RFC1704,October1994.
[5]Haller,N.,"TheS/KEYOne-TimePasswordSystem",
RFC1760,February1995.
[6]Rivest,R.,"TheMD5Message-DigestAlgorithm",RFC1321,
April1992.
[7]NationalInstituteofStandardsandTechnology(NIST),
"AnnouncingtheSecureHashStandard",FIPS180-1,U.S.
DepartmentofCommerce,April1995.
[8]InternationalStandard-InformationProcessing--ISO7-bit
codedcharactersetforinformationinterchange(InvariantCode
Set),ISO-646,InternationalStandardsOrganization,Geneva,
Switzerland,1983
[9]ComputerEmergencyResponseTeam(CERT),"IPSpoofingand
HijackedTerminalConnections",CA-95:01,January1995.
AvailableviaanonymousFTPfrominfo.cert.orgin
/pub/cert_advisories.
[10]Atkinson,R.,"SecurityArchitecturefortheInternetProtocol",
RFC1825,August1995.
[11]Atkinson,R.,"IPAuthenticationHeader",RFC1826,August
1995.
[12]Atkinson,R.,"IPEncapsulatingSecurityPayload(ESP)",RFC
1827,August1995.
13.0作者的地址
NeilHaller
Bellcore
MCC1C-265B
445SouthStreet
Morristown,NJ,07960-6438,USA
Phone:+1201829-4478
Fax:+1201829-2504
EMail:nmh@bellcore.com
CraigMetz
KamanSciencesCorporation
ForNRLCode5544
4555OverlookAvenue,S.W.
Washington,DC,20375-5337,USA
Phone:+1202404-7122
Fax:+1202404-7942
EMail:cmetz@cs.nrl.navy.mil
PhilipJ.NesserII
Nesser&NesserConsulting
13501100thAveNE
Suite5202
Kirkland,WA98034,USA
Phone:+12064814303
EMail:pjnesser@martigny.ai.mit.edu
MikeStraw
Bellcore
RRC1A-225
445HoesLane
Piscataway,NJ08854-4182
Phone:+1908699-5212
EMail:mess@bellcore.com
附录A-安全哈希算法界面
原始互操作测试提供了有效的察看当转换协议规范到运行编码时的细微的问题。非凡是,数据比特顺序的操作依靠于硬件结构,计算机存储多字节数据的具体方式。这种方法典型的称为大或者小头("endian")。大头机器存储数据最高有效位在前,而小头机器存储数据最低有效位在前。这样,在大头机器上数据存储从左到右,而小头机器存储数据从右到左。
例如,四字节值0x11AABBCC存储在大头机器是按照下列四字节序列"0x11","0xAA","0xBB",和"0xCC",而在小头机器上存储序列将是"0xCC","0xBB","0xAA",和"0x11"。
由于历史的原因,和为了促进已存在设备的互操作性,决定所有哈希合并到OTP协议必须(MUST)存储哈希函数的输出以小头格式,这在输出比特流折叠为64比特(bits)之前发生。这个在MD4和MD5执行中被做(参见参考[2]和[6]),然而对于SHA1(参见参考[7])的执行必须明确被做。
任何未来应用到OTP协议的哈希函数应该(SHOULD)提供答应独立应用操作成功的相似的代码参考片断。
MD4消息文摘(参见参考[2])
MD4_CTXmd;
unsignedcharresult[16];
strcpy(buf,seed);/*seedmustbeinlowercase*/
strcat(buf,passwd);
MD4Init(&md);
MD4Update(&md,(unsignedchar*)buf,strlen(buf));
MD4Final(result,&md);
/*Foldthe128bitresultto64bits*/
for(i=0;i<8;i++)
result[i]^=result[i+8];
MD5消息文摘(参见参考[6])
MD5_CTXmd;
unsignedcharresult[16];
strcpy(buf,seed);/*seedmustbeinlowercase*/
strcat(buf,passwd);
MD5Init(&md);
MD5Update(&md,(unsignedchar*)buf,strlen(buf));
MD5Final(result,&md);
/*Foldthe128bitresultto64bits*/
for(i=0;i<8;i++)
result[i]^=result[i+8];
SHA安全哈希算法(参见参考[7])
SHA_INFOsha;
unsignedcharresult[16];
strcpy(buf,seed);/*seedmustbeinlowercase*/
strcat(buf,passwd);
sha_init(&sha);
sha_update(&sha,(unsignedchar*)buf,strlen(buf));
sha_final(&sha);/*NOTE:noresultbuffer*/
/*Foldthe160bitresultto64bits*/
sha.digest[0]^=sha.digest[2];
sha.digest[1]^=sha.digest[3];
sha.digest[0]^=sha.digest[4];
/*
*copytheresulting64bitstotheresultbufferinlittleendian
*fashion(analogoustothewayMD4Final()andMD5Final()do).
*/
for(i=0,j=0;j<8;i++,j+=4)
{
result[j]=(unsignedchar)(sha.digest[i]&0xff);
result[j+1]=(unsignedchar)((sha.digest[i]>>8)&0xff);
result[j+2]=(unsignedchar)((sha.digest[i]>>16)&0xff);
result[j+3]=(unsignedchar)((sha.digest[i]>>24)&0xff);
}
附录B-可替换字典算法
OTP一次口令可替换字典编码的目的是答应特指语言或者友好词句的使用。大小写转换总没有很好的定义,所以可替换字典编码是大小写敏感的。服务应该(SHOULD)接受除了标准六词和十六进制编码以外的这种编码。
使用可替换字典的编码生成程序
标准六词编码使用在字典中词的布局表示11-bit数字的编码。那么64-bit一次口令能够通过六个词表示。
一个2048词的可替换字典可以这样创造,每个词W和词在字典中的位置顺序N的关系如下:
alg(W)%2048==N
其中
alg是使用的哈希算法(例如MD4,MD5,SHA1)。
此外,在标准字典中没有词可以被选择。
产生器通过计算标准六词编码的奇偶校验扩展64-bit一次口令到66bits。六个11-bit数字然后通过使用例如上面关系创造的字典转换为词。
可替换字典一次口令的服务解码
使用上面的编码服务接受可替换字典编码转换每一个词到11-bit数字。这些数字然后使用同样的方式解码标准字典词来形成66-bit一次口令。
服务不需要已经存取了其要被验证的一次口令创建使用的可替换字典。这是因为从词到11-bit数字的解码不必使用任何字典。作为字典独立的结果,服务可以接受一个可替换字典,就可以接受所有的可替换字典。
附录C-OTP认证例子
这个附录提供了三个定义的OTP密码哈希算法一系列的输入和正确的输出——MD4、MD5和SHA1。这篇文档目的是当创建产生器和服务时为了开发者互操作检查使用。输出在文档附录D中以十六进制计数法和六词编码提供。
普通检查
注重给定这些检查的输出不是为了逐字地去做,但是动作类型的描述应该给出。
PassPhraseLength(通行短语长度)
Input:(输入)
PassPhrase:Too_short(通行短语)
Seed:iamvalid(种子)
Count:99(计数)
Hash:ANY(哈希算法)
Output:(输出)
ERROR:PassPhrasetooshort(通行短语太短)
Input:
PassPhrase:
1234567890123456789012345678901234567890123456789012345678901234
Seed:iamvalid
Count:99
Hash:ANY
Output:
WARNING:PassPhraselongerthantherecommendedmaximumlengthof63(通行短语的长度大于推荐的最长长度63)
SeedValues(种子值)
Input:
PassPhrase:A_Valid_Pass_Phrase
Seed:Length_Okay
Count:99
Hash:ANY
Output:
ERROR:Seedmustbepurelyalphanumeric(种子必须完全是字母数字)
Input:
PassPhrase:A_Valid_Pass_Phrase
Seed:LengthOfSeventeen
Count:99
Hash:ANY
Output:
ERROR:Seedmustbebetween1and16charactersinlength(种子必须在1到16个字母长度之间)
Input:
PassPhrase:A_Valid_Pass_Phrase
Seed:ASeed
Count:99
Hash:ANY
Output:
ERROR:Seedmustnotcontainanyspaces(种子必须不能包括任何空格)
ParityCalculations(奇偶校验计算)
Input:
PassPhrase:A_Valid_Pass_Phrase
Seed:AValidSeed
Count:99
Hash:MD5
Output:
Hex:85c43ee03857765b
SixWord(CORRECT):FOWLKIDMASHDEADDUALOAF
SixWord(INCORRECTPARITY):FOWLKIDMASHDEADDUALNUT
SixWord(INCORRECTPARITY):FOWLKIDMASHDEADDUALO
SixWord(INCORRECTPARITY):FOWLKIDMASHDEADDUALOAK
MD4ENCODINGS(MD4编码)
PassPhraseSeedCntHexSixWordFormat
========================================================================
Thisisatest.TeSt0D1854218EBBB0B51
ROMEMUGFREDSCANLIVELACE
Thisisatest.TeSt163473EF01CD0B444
CARDSADMINIRYECOLKIN
Thisisatest.TeSt99C5E612776E6C237A
NOTEOUTIBISSINKNAVEMODE
AbCdEfGhIjKalpha1050076F47EB1ADE4E
AWAYSENROOKSALTLICEMAP
AbCdEfGhIjKalpha1165D20D1949B5F7AB
CHEWGRIMWUHANGBUCKSAID
AbCdEfGhIjKalpha199D150C82CCE6F62D1
ROILFREECOGHUNKWAITCOCA
OTP'saregoodcorrect0849C79D4F6F55388
FOOLSTEMDONETOOLBECKNILE
OTP'saregoodcorrect18C0992FB250847B1
GISTAMOSMOOTAIDSFOODSEEM
OTP'saregoodcorrect993F3BF4B4145FD74B
TAGSLOWNOVMINWOOLKENO
MD5ENCODINGS(MD5编码)
PassPhraseSeedCntHexSixWordFormat
========================================================================
Thisisatest.TeSt09E876134D90499DD
INCHSEAANNELONGAHEMTOUR
Thisisatest.TeSt17965E05436F5029F
EASEOILFUMCUREAWRYAVIS
Thisisatest.TeSt9950FE1962C4965880
BAILTUFTBITSGANGCHEFTHY
AbCdEfGhIjKalpha1087066DD9644BF206
FULLPEWDOWNONCEMORTARC
AbCdEfGhIjKalpha117CD34C1040ADD14B
FACTHOOFATFISTSITEKENT
AbCdEfGhIjKalpha1995AA37A81F212146C
BODEHOPJAKESTOWJUTRAP
OTP'saregoodcorrect0F205753943DE4CF9
ULANNEWARMYFUSESUITEYED
OTP'saregoodcorrect1DDCDAC956F234937
SKIMCULTLOBSLAMPOEHOWL
OTP'saregoodcorrect99B203E28FA525BE47
LONGIVYJULYAJARBONDLEE
SHA1ENCODINGS(SHA1编码)
PassPhraseSeedCntHexSixWordFormat
========================================================================
Thisisatest.TeSt0BB9E6AE1979D8FF4
MILTVARYMASTOKSEESWENT
Thisisatest.TeSt163D936639734385B
CARTOTTOHIVEODEVATNUT
Thisisatest.TeSt9987FEC7768B73CCF9
GAFFWAITSKIDGIGSKYEYED
AbCdEfGhIjKalpha10AD85F658EBE383C9
LESTORHEELSCOTROBSUIT
AbCdEfGhIjKalpha11D07CE229B5CF119B
RITETAKEGELDCOSTTUNERECK
AbCdEfGhIjKalpha19927BC71035AAF3DC6
MAYSTARTINLYONVEDASTAN
OTP'saregoodcorrect0D51F3E99BF8E6F0B
RUSTWELTKICKFELLTAILFRAU
OTP'saregoodcorrect182AEB52D943774E4
FLITDOSEALSOMEWDRUMDEFY
OTP'saregoodcorrect994F296A74FE1567EC
AURAALOEHURLWINGBERGWAIT
附录D-六词和二进制格式之间转换的字典
这个字典来自于原始Bellcore(贝尔通讯研究所)参考发行的模块put.c(文件)。
{"A","ABE","ACE","ACT","AD","ADA","ADD",
"AGO","AID","AIM","AIR","ALL","ALP","AM","AMY",
"AN","ANA","AND","ANN","ANT","ANY","APE","APS",
"APT","ARC","ARE","ARK","ARM","ART","AS","ASH",
"ASK","AT","ATE","AUG","AUK","AVE","AWE","AWK",
"AWL","AWN","AX","AYE","BAD","BAG","BAH","BAM",
"BAN","BAR","BAT","BAY","BE","BED","BEE","BEG",
"BEN","BET","BEY","BIB","BID","BIG","BIN","BIT",
"BOB","BOG","BON","BOO","BOP","BOW","BOY","BUB",
"BUD","BUG","BUM","BUN","BUS","BUT","BUY","BY",
"BYE","CAB","CAL","CAM","CAN","CAP","CAR","CAT",
"CAW","COD","COG","COL","CON","COO","COP","COT",
"COW","COY","CRY","CUB","CUE","CUP","CUR","CUT",
"DAB","DAD","DAM","DAN","DAR","DAY","DEE","DEL",
"DEN","DES","DEW","DID","DIE","DIG","DIN","DIP",
"DO","DOE","DOG","DON","DOT","DOW","DRY","DUB",
"DUD","DUE","DUG","DUN","EAR","EAT","ED","EEL",
"EGG","EGO","ELI","ELK","ELM","ELY","EM","END",
"EST","ETC","EVA","EVE","EWE","EYE","FAD","FAN",
"FAR","FAT","FAY","FED","FEE","FEW","FIB","FIG",
"FIN","FIR","FIT","FLO","FLY","FOE","FOG","FOR",
"FRY","FUM","FUN","FUR","GAB","GAD","GAG","GAL",
"GAM","GAP","GAS","GAY","GEE","GEL","GEM","GET",
"GIG","GIL","GIN","GO","GOT","GUM","GUN","GUS",
"GUT","GUY","GYM","GYP","HA","HAD","HAL","HAM",
"HAN","HAP","HAS","HAT","HAW","HAY","HE","HEM",
"HEN","HER","HEW","HEY","HI","HID","HIM","HIP",
"HIS","HIT","HO","HOB","HOC","HOE","HOG","HOP",
"HOT","HOW","HUB","HUE","HUG","HUH","HUM","HUT",
"I","ICY","IDA","IF","IKE","ILL","INK","INN",
"IO","ION","IQ","IRA","IRE","IRK","IS","IT",
"ITS","IVY","JAB","JAG","JAM","JAN","JAR","JAW",
"JAY","JET","JIG","JIM","JO","JOB","JOE","JOG",
"JOT","JOY","JUG","JUT","KAY","KEG","KEN","KEY",
"KID","KIM","KIN","KIT","LA","LAB","LAC","LAD",
"LAG","LAM","LAP","LAW","LAY","LEA","LED","LEE",
"LEG","LEN","LEO","LET","LEW","LID","LIE","LIN",
"LIP","LIT","LO","LOB","LOG","LOP","LOS","LOT",
"LOU","LOW","LOY","LUG","LYE","MA","MAC","MAD",
"MAE","MAN","MAO","MAP","MAT","MAW","MAY","ME",
"MEG","MEL","MEN","MET","MEW","MID","MIN","MIT",
"MOB","MOD","MOE","MOO","MOP","MOS","MOT","MOW",
"MUD","MUG","MUM","MY","NAB","NAG","NAN","NAP",
"NAT","NAY","NE","NED","NEE","NET","NEW","NIB",
"NIL","NIP","NIT","NO","NOB","NOD","NON","NOR",
"NOT","NOV","NOW","NU","NUN","NUT","O","OAF",
"OAK","OAR","OAT","ODD","ODE","OF","OFF","OFT",
"OH","OIL","OK","OLD","ON","ONE","OR","ORB",
"ORE","ORR","OS","OTT","OUR","OUT","OVA","OW",
"OWE","OWL","OWN","OX","PA","PAD","PAL","PAM",
"PAN","PAP","PAR","PAT","PAW","PAY","PEA","PEG",
"PEN","PEP","PER","PET","PEW","PHI","PI","PIE",
"PIN","PIT","PLY","PO","POD","POE","POP","POT",
"POW","PRO","PRY","PUB","PUG","PUN","PUP","PUT",
"QUO","RAG","RAM","RAN","RAP","RAT","RAW","RAY",
"REB","RED","REP","RET","RIB","RID","RIG","RIM",
"RIO","RIP","ROB","ROD","ROE","RON","ROT","ROW",
"ROY","RUB","RUE","RUG","RUM","RUN","RYE","SAC",
"SAD","SAG","SAL","SAM","SAN","SAP","SAT","SAW",
"SAY","SEA","SEC","SEE","SEN","SET","SEW","SHE",
"SHY","SIN","SIP","SIR","SIS","SIT","SKI","SKY",
"SLY","SO","SOB","SOD","SON","SOP","SOW","SOY",
"SPA","SPY","SUB","SUD","SUE","SUM","SUN","SUP",
"TAB","TAD","TAG","TAN","TAP","TAR","TEA","TED",
"TEE","TEN","THE","THY","TIC","TIE","TIM","TIN",
"TIP","TO","TOE","TOG","TOM","TON","TOO","TOP",
"TOW","TOY","TRY","TUB","TUG","TUM","TUN","TWO",
"UN","UP","US","USE","VAN","VAT","VET","VIE",
"WAD","WAG","WAR","WAS","WAY","WE","WEB","WED",
"WEE","WET","WHO","WHY","WIN","WIT","WOK","WON",
"WOO","WOW","WRY","WU","YAM","YAP","YAW","YE",
"YEA","YES","YET","YOU","ABED","ABEL","ABET","ABLE",
"ABUT","ACHE","ACID","ACME","ACRE","ACTA","ACTS","ADAM",
"ADDS","ADEN","AFAR","AFRO","AGEE","AHEM","AHOY","AIDA",
"AIDE","AIDS","AIRY","AJAR","AKIN","ALAN","ALEC","ALGA",
"ALIA","ALLY","ALMA","ALOE","ALSO","ALTO","ALUM","ALVA",
"AMEN","AMES","AMID","AMMO","AMOK","AMOS","AMRA","ANDY",
"ANEW","ANNA","ANNE","ANTE","ANTI","AQUA","ARAB","ARCH",
"AREA","ARGO","ARID","ARMY","ARTS","ARTY","ASIA","ASKS",
"ATOM","AUNT","AURA","AUTO","AVER","AVID","AVIS","AVON",
"AVOW","AWAY","AWRY","BABE","BABY","BACH","BACK","BADE",
"BAIL","BAIT","BAKE","BALD","BALE","BALI","BALK","BALL",
"BALM","BAND","BANE","BANG","BANK","BARB","BARD","BARE",
"BARK","BARN","BARR","BASE","BASH","BASK","BASS","BATE",
"BATH","BAWD","BAWL","BEAD","BEAK","BEAM","BEAN","BEAR",
"BEAT","BEAU","BECK","BEEF","BEEN","BEER","BEET","BELA",
"BELL","BELT","BEND","BENT","BERG","BERN","BERT","BESS",
"BEST","BETA","BETH","BHOY","BIAS","BIDE","BIEN","BILE",
"BILK","BILL","BIND","BING","BIRD","BITE","BITS","BLAB",
"BLAT","BLED","BLEW","BLOB","BLOC","BLOT","BLOW","BLUE",
"BLUM","BLUR","BOAR","BOAT","BOCA","BOCK","BODE","BODY",
"BOGY","BOHR","BOIL","BOLD","BOLO","BOLT","BOMB","BONA",
"BOND","BONE","BONG","BONN","BONY","BOOK","BOOM","BOON",
"BOOT","BORE","BORG","BORN","BOSE","BOSS","BOTH","BOUT",
"BOWL","BOYD","BRAD","BRAE","BRAG","BRAN","BRAY","BRED",
"BREW","BRIG","BRIM","BROW","BUCK","BUDD","BUFF","BULB",
"BULK","BULL","BUNK","BUNT","BUOY","BURG","BURL","BURN",
"BURR","BURT","BURY","BUSH","BUSS","BUST","BUSY","BYTE",
"CADY","CAFE","CAGE","CAIN","CAKE","CALF","CALL","CALM",
"CAME","CANE","CANT","CARD","CARE","CARL","CARR","CART",
"CASE","CASH","CASK","CAST","CAVE","CEIL","CELL","CENT",
"CERN","CHAD","CHAR","CHAT","CHAW","CHEF","CHEN","CHEW",
"CHIC","CHIN","CHOU","CHOW","CHUB","CHUG","CHUM","CITE",
"CITY","CLAD","CLAM","CLAN","CLAW","CLAY","CLOD","CLOG",
"CLOT","CLUB","CLUE","COAL","COAT","COCA","COCK","COCO",
"CODA","CODE","CODY","COED","COIL","COIN","COKE","COLA",
"COLD","COLT","COMA","COMB","COME","COOK","COOL","COON",
"COOT","CORD","CORE","CORK","CORN","COST","COVE","COWL",
"CRAB","CRAG","CRAM","CRAY","CREW","CRIB","CROW","CRUD",
"CUBA","CUBE","CUFF","CULL","CULT","CUNY","CURB","CURD",
"CURE","CURL","CURT","CUTS","DADE","DALE","DAME","DANA",
"DANE","DANG","DANK","DARE","DARK","DARN","DART","DASH",
"DATA","DATE","DAVE","DAVY","DAWN","DAYS","DEAD","DEAF",
"DEAL","DEAN","DEAR","DEBT","DECK","DEED","DEEM","DEER",
"DEFT","DEFY","DELL","DENT","DENY","DESK","DIAL","DICE",
"DIED","DIET","DIME","DINE","DING","DINT","DIRE","DIRT",
"DISC","DISH","DISK","DIVE","DOCK","DOES","DOLE","DOLL",
"DOLT","DOME","DONE","DOOM","DOOR","DORA","DOSE","DOTE",
"DOUG","DOUR","DOVE","DOWN","DRAB","DRAG","DRAM","DRAW",
"DREW","DRUB","DRUG","DRUM","DUAL","DUCK","DUCT","DUEL",
"DUET","DUKE","DULL","DUMB","DUNE","DUNK","DUSK","DUST",
"DUTY","EACH","EARL","EARN","EASE","EAST","EASY","EBEN",
"ECHO","EDDY","EDEN","EDGE","EDGY","EDIT","EDNA","EGAN",
"ELAN","ELBA","ELLA","ELSE","EMIL","EMIT","EMMA","ENDS",
"ERIC","EROS","EVEN","EVER","EVIL","EYED","FACE","FACT",
"FADE","FAIL","FAIN","FAIR","FAKE","FALL","FAME","FANG",
"FARM","FAST","FATE","FAWN","FEAR","FEAT","FEED","FEEL",
"FEET","FELL","FELT","FEND","FERN","FEST","FEUD","FIEF",
"FIGS","FILE","FILL","FILM","FIND","FINE","FINK","FIRE",
"FIRM","FISH","FISK","FIST","FITS","FIVE","FLAG","FLAK",
"FLAM","FLAT","FLAW","FLEA","FLED","FLEW","FLIT","FLOC",
"FLOG","FLOW","FLUB","FLUE","FOAL","FOAM","FOGY","FOIL",
"FOLD","FOLK","FOND","FONT","FOOD","FOOL","FOOT","FORD",
"FORE","FORK","FORM","FORT","FOSS","FOUL","FOUR","FOWL",
"FRAU","FRAY","FRED","FREE","FRET","FREY","FROG","FROM",
"FUEL","FULL","FUME","FUND","FUNK","FURY","FUSE","FUSS",
"GAFF","GAGE","GAIL","GAIN","GAIT","GALA","GALE","GALL",
"GALT","GAME","GANG","GARB","GARY","GASH","GATE","GAUL",
"GAUR","GAVE","GAWK","GEAR","GELD","GENE","GENT","GERM",
"GETS","GIBE","GIFT","GILD","GILL","GILT","GINA","GIRD",
"GIRL","GIST","GIVE","GLAD","GLEE","GLEN","GLIB","GLOB",
"GLOM","GLOW","GLUE","GLUM","GLUT","GOAD","GOAL","GOAT",
"GOER","GOES","GOLD","GOLF","GONE","GONG","GOOD","GOOF",
"GORE","GORY","GOSH","GOUT","GOWN","GRAB","GRAD","GRAY",
"GREG","GREW","GREY","GRID","GRIM","GRIN","GRIT","GROW",
"GRUB","GULF","GULL","GUNK","GURU","GUSH","GUST","GWEN",
"GWYN","HAAG","HAAS","HACK","HAIL","HAIR","HALE","HALF",
"HALL","HALO","HALT","HAND","HANG","HANK","HANS","HARD",
"HARK","HARM","HART","HASH","HAST","HATE","HATH","HAUL",
"HAVE","HAWK","HAYS","HEAD","HEAL","HEAR","HEAT","HEBE",
"HECK","HEED","HEEL","HEFT","HELD","HELL","HELM","HERB",
"HERD","HERE","HERO","HERS","HESS","HEWN","HICK","HIDE",
"HIGH","HIKE","HILL","HILT","HIND","HINT","HIRE","HISS",
"HIVE","HOBO","HOCK","HOFF","HOLD","HOLE","HOLM","HOLT",
"HOME","HONE","HONK","HOOD","HOOF","HOOK","HOOT","HORN",
"HOSE","HOST","HOUR","HOVE","HOWE","HOWL","HOYT","HUCK",
"HUED","HUFF","HUGE","HUGH","HUGO","HULK","HULL","HUNK",
"HUNT","HURD","HURL","HURT","HUSH","HYDE","HYMN","IBIS",
"ICON","IDEA","IDLE","IFFY","INCA","INCH","INTO","IONS",
"IOTA","IOWA","IRIS","IRMA","IRON","ISLE","ITCH","ITEM",
"IVAN","JACK","JADE","JAIL","JAKE","JANE","Java","JEAN",
"JEFF","JERK","JESS","JEST","JIBE","JILL","JILT","JIVE",
"JOAN","JOBS","JOCK","JOEL","JOEY","JOHN","JOIN","JOKE",
"JOLT","JOVE","JUDD","JUDE","JUDO","JUDY","JUJU","JUKE",
"JULY","JUNE","JUNK","JUNO","JURY","JUST","JUTE","KAHN",
"KALE","KANE","KANT","KARL","KATE","KEEL","KEEN","KENO",
"KENT","KERN","KERR","KEYS","KICK","KILL","KIND","KING",
"KIRK","KISS","KITE","KLAN","KNEE","KNEW","KNIT","KNOB",
"KNOT","KNOW","KOCH","KONG","KUDO","KURD","KURT","KYLE",
"LACE","LACK","LACY","LADY","LAID","LAIN","LAIR","LAKE",
"LAMB","LAME","LAND","LANE","LANG","LARD","LARK","LASS",
"LAST","LATE","LAUD","LAVA","LAWN","LAWS","LAYS","LEAD",
"LEAF","LEAK","LEAN","LEAR","LEEK","LEER","LEFT","LEND",
"LENS","LENT","LEON","LESK","LESS","LEST","LETS","LIAR",
"LICE","LICK","LIED","LIEN","LIES","LIEU","LIFE","LIFT",
"LIKE","LILA","LILT","LILY","LIMA","LIMB","LIME","LIND",
"LINE","LINK","LINT","LION","LISA","LIST","LIVE","LOAD",
"LOAF","LOAM","LOAN","LOCK","LOFT","LOGE","LOIS","LOLA",
"LONE","LONG","LOOK","LOON","LOOT","LORD","LORE","LOSE",
"LOSS","LOST","LOUD","LOVE","LOWE","LUCK","LUCY","LUGE",
"LUKE","LULU","LUND","LUNG","LURA","LURE","LURK","LUSH",
"LUST","LYLE","LYNN","LYON","LYRA","MACE","MADE","MAGI",
"MAID","MAIL","MAIN","MAKE","MALE","MALI","MALL","MALT",
"MANA","MANN","MANY","MARC","MARE","MARK","MARS","MART",
"MARY","MASH","MASK","MASS","MAST","MATE","MATH","MAUL",
"MAYO","MEAD","MEAL","MEAN","MEAT","MEEK","MEET","MELD",
"MELT","MEMO","MEND","MENU","MERT","MESH","MESS","MICE",
"MIKE","MILD","MILE","MILK","MILL","MILT","MIMI","MIND",
"MINE","MINI","MINK","MINT","MIRE","MISS","MIST","MITE",
"MITT","MOAN","MOAT","MOCK","MODE","MOLD","MOLE","MOLL",
"MOLT","MONA","MONK","MONT","MOOD","MOON","MOOR","MOOT",
"MORE","MORN","MORT","MOSS","MOST","MOTH","MOVE","MUCH",
"MUCK","MUDD","MUFF","MULE","MULL","MURK","MUSH","MUST",
"MUTE","MUTT","MYRA","MYTH","NAGY","NAIL","NAIR","NAME",
"NARY","NASH","NAVE","NAVY","NEAL","NEAR","NEAT","NECK",
"NEED","NEIL","NELL","NEON","Nero","NESS","NEST","NEWS",
"NEWT","NIBS","NICE","NICK","NILE","NINA","NINE","NOAH",
"NODE","NOEL","NOLL","NONE","NOOK","NOON","NORM","NOSE",
"NOTE","NOUN","NOVA","NUDE","NULL","NUMB","OATH","OBEY",
"OBOE","ODIN","OHIO","OILY","OINT","OKAY","OLAF","OLDY",
"OLGA","OLIN","OMAN","OMEN","OMIT","ONCE","ONES","ONLY",
"ONTO","ONUS","ORAL","ORGY","OSLO","OTIS","OTTO","OUCH",
"OUST","OUTS","OVAL","OVEN","OVER","OWLY","OWNS","QUAD",
"QUIT","QUOD","RACE","RACK","RACY","RAFT","RAGE","RAID",
"RAIL","RAIN","RAKE","RANK","RANT","RARE","RASH","RATE",
"RAVE","RAYS","READ","REAL","REAM","REAR","RECK","REED",
"REEF","REEK","REEL","REID","REIN","RENA","REND","RENT",
"REST","RICE","RICH","RICK","RIDE","RIFT","RILL","RIME",
"RING","RINK","RISE","RISK","RITE","ROAD","ROAM","ROAR",
"ROBE","ROCK","RODE","ROIL","ROLL","ROME","ROOD","ROOF",
"ROOK","ROOM","ROOT","ROSA","ROSE","ROSS","ROSY","ROTH",
"ROUT","ROVE","ROWE","ROWS","RUBE","RUBY","RUDE","RUDY",
"RUIN","RULE","RUNG","RUNS","RUNT","RUSE","RUSH","RUSK",
"RUSS","RUST","RUTH","SACK","SAFE","SAGE","SAID","SAIL",
"SALE","SALK","SALT","SAME","SAND","SANE","SANG","SANK",
"SARA","SAUL","SAVE","SAYS","SCAN","SCAR","SCAT","SCOT",
"SEAL","SEAM","SEAR","SEAT","SEED","SEEK","SEEM","SEEN",
"SEES","SELF","SELL","SEND","SENT","SETS","SEWN","SHAG",
"SHAM","SHAW","SHAY","SHED","SHIM","SHIN","SHOD","SHOE",
"SHOT","SHOW","SHUN","SHUT","SICK","SIDE","SIFT","SIGH",
"SIGN","SILK","SILL","SILO","SILT","SINE","SING","SINK",
"SIRE","SITE","SITS","SITU","SKAT","SKEW","SKID","SKIM",
"SKIN","SKIT","SLAB","SLAM","SLAT","SLAY","SLED","SLEW",
"SLID","SLIM","SLIT","SLOB","SLOG","SLOT","SLOW","SLUG",
"SLUM","SLUR","SMOG","SMUG","SNAG","SNOB","SNOW","SNUB",
"SNUG","SOAK","SOAR","SOCK","SODA","SOFA","SOFT","SOIL",
"SOLD","SOME","SONG","SOON","SOOT","SORE","SORT","SOUL",
"SOUR","SOWN","STAB","STAG","STAN","STAR","STAY","STEM",
"STEW","STIR","STOW","STUB","STUN","SUCH","SUDS","SUIT",
"SULK","SUMS","SUNG","SUNK","SURE","SURF","SWAB","SWAG",
"SWAM","SWAN","SWAT","SWAY","SWIM","SWUM","TACK","TACT",
"TAIL","TAKE","TALE","TALK","TALL","TANK","TASK","TATE",
"TAUT","TEAL","TEAM","TEAR","TECH","TEEM","TEEN","TEET",
"TELL","TEND","TENT","TERM","TERN","TESS","TEST","THAN",
"THAT","THEE","THEM","THEN","THEY","THIN","THIS","THUD",
"THUG","TICK","TIDE","TIDY","TIED","TIER","TILE","TILL",
"TILT","TIME","TINA","TINE","TINT","TINY","TIRE","TOAD",
"TOGO","TOIL","TOLD","TOLL","TONE","TONG","TONY","TOOK",
"TOOL","TOOT","TORE","TORN","TOTE","TOUR","TOUT","TOWN",
"TRAG","TRAM","TRAY","TREE","TREK","TRIG","TRIM","TRIO",
"TROD","TROT","TROY","TRUE","TUBA","TUBE","TUCK","TUFT",
"TUNA","TUNE","TUNG","TURF","TURN","TUSK","TWIG","TWIN",
"TWIT","ULAN","UNIT","URGE","USED","USER","USES","UTAH",
"VAIL","VAIN","VALE","VARY","VASE","VAST","VEAL","VEDA",
"VEIL","VEIN","VEND","VENT","VERB","VERY","VETO","VICE",
"VIEW","VINE","VISE","VOID","VOLT","VOTE","WACK","WADE",
"WAGE","WAIL","WAIT","WAKE","WALE","WALK","WALL","WALT",
"WAND","WANE","WANG","WANT","WARD","WARM","WARN","WART",
"WASH","WAST","WATS","WATT","WAVE","WAVY","WAYS","WEAK",
"WEAL","WEAN","WEAR","WEED","WEEK","WEIR","WELD","WELL",
"WELT","WENT","WERE","WERT","WEST","WHAM","WHAT","WHEE",
"WHEN","WHET","WHOA","WHOM","WICK","WIFE","WILD","WILL",
"WIND","WINE","WING","WINK","WINO","WIRE","WISE","WISH",
"WITH","WOLF","WONT","WOOD","WOOL","WORD","WORE","WORK",
"WORM","WORN","WOVE","WRIT","WYNN","YALE","YANG","YANK",
"YARD","YARN","YAWL","YAWN","YEAH","YEAR","YELL","YOGA",
"YOKE"};
完整版权声明
版权(C)因特网协会(1998)。版权所有。
这个文档和它的翻译可以拷贝和分配给其他人,以及有关评论或者别样的解释或者其应用的帮助等派生工作可以被预备、拷贝、发表和发布,其整体或者部分没有受到任何限制,提供上述版权通知以及本段落应被包含在所有这样的拷贝和派生工作中。然而,这个文档本身不可以以任何方式修改,例如移走版权通知或者Internet协会或其他Internet组织的参考,除非为了发展Internet标准(其版权程序定义在InternetStandards进程如下),或者需要翻译成除英语以外的其他语言。
上述限制答应授权是持久的并且将不被Internet协会或者它的继续人隐藏或者转让。
译者注:对于本文档的完整版权声明原文如下:
FullCopyrightStatement
Copyright(C)TheInternetSociety(1998).AllRightsReserved.
Thisdocumentandtranslationsofitmaybecopiedandfurnishedto
others,andderivativeworksthatcommentonorotherwiseeXPlainit
orassistinitsimplementationmaybeprepared,copied,published
anddistributed,inwholeorinpart,withoutrestrictionofany
kind,providedthattheabovecopyrightnoticeandthisparagraphare
includedonallsuchcopiesandderivativeworks.However,this
documentitselfmaynotbemodifiedinanyway,suchasbyremoving
thecopyrightnoticeorreferencestotheInternetSocietyorother
Internetorganizations,exceptasneededforthepurposeof
developingInternetstandardsinwhichcasetheproceduresfor
copyrightsdefinedintheInternetStandardsprocessmustbe
followed,orasrequiredtotranslateitintolanguagesotherthan
English.
Thelimitedpermissionsgrantedaboveareperpetualandwillnotbe
revokedbytheInternetSocietyoritssuccessorsorassigns.
Thisdocumentandtheinformationcontainedhereinisprovidedonan
"ASIS"basisandTHEINTERNETSOCIETYANDTHEINTERNETENGINEERING
TASKFORCEDISCLAIMSALLWARRANTIES,EXPRESSORIMPLIED,INCLUDING
BUTNOTLIMITEDTOANYWARRANTYTHATTHEUSEOFTHEINFORMATION
HEREINWILLNOTINFRINGEANYRIGHTSORANYIMPLIEDWARRANTIESOF
MERCHANTABILITYORFITNESSFORAPARTICULARPURPOSE.