4.3.3  在网页中生成一个密钥

4.3.3 在网页中生成一个密钥

在HTML 5中,<keygen>元素是一种密钥对生成器(key-pair generator)技术。当提交表单时会生成两个密钥,一个是私钥,一个公钥。其中私钥(Private Key)存储于客户端,公钥(PublicKey)则被发送到服务器。公钥可用于之后验证用户的客户端证书(Client Certificate)。但是截止本书出版之时,浏览器对此元素的糟糕的支持度不足以使其成为一种有用的安全标准。

下面通过一个实例讲解在网页中生成一个密钥的方法。

978-7-111-53392-4-Part02-215.jpg

在本实例的表单中,新建了一个“name”值为“keyUserInfo”的<keygen>元素,通过此元素可以在页面中创建一个选择密钥位数的下拉列表框。当选择列表框中的某选项值,单击表单的“提交”按钮时,可以根据所选密钥的位数生成对应位数的密钥提交给服务器。实例文件17.html的实现代码如下。

978-7-111-53392-4-Part02-216.jpg

978-7-111-53392-4-Part02-217.jpg

在上述代码中,<keygen>元素在表单中以下拉列表的形式展示提供密钥位数的选择。当提交表单时,可以通过<keygen>元素,在表单的“name”值中获取该元素生成的对应位数密钥。另外,<keygen>元素中“keyType”属性表明生成密钥的类型,如设置为“rsa”,则以“rsa”加密类型生成相应位数的密钥。到笔者写作本书时,只有Chrome与Opera浏览器支持该元素。执行效果如图4-27所示。

978-7-111-53392-4-Part02-218.jpg

图4-27 执行效果