﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-nanikenny</title><link>http://www.blogjava.net/nanikenny/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 15 Apr 2026 11:59:52 GMT</lastBuildDate><pubDate>Wed, 15 Apr 2026 11:59:52 GMT</pubDate><ttl>60</ttl><item><title>OTP之KEY的相关操作和处理</title><link>http://www.blogjava.net/nanikenny/archive/2010/11/23/338773.html</link><dc:creator>赵朋川</dc:creator><author>赵朋川</author><pubDate>Tue, 23 Nov 2010 04:28:00 GMT</pubDate><guid>http://www.blogjava.net/nanikenny/archive/2010/11/23/338773.html</guid><wfw:comment>http://www.blogjava.net/nanikenny/comments/338773.html</wfw:comment><comments>http://www.blogjava.net/nanikenny/archive/2010/11/23/338773.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nanikenny/comments/commentRss/338773.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nanikenny/services/trackbacks/338773.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; &nbsp;KEY采用的是求一个字符串的SHA1值（160bit）赋给一个int型数组int KEY[5]作为OTP生成方法的的参数输入。输入的字符串不可以超过16，通过判断字符串长度提醒用户输入的KEY是否合法。将输入的字符串通过Tochar方法法转换成一个16元素的char型数组，然后再转换成一个整形数组，对于长度小于16的空余元素则补零。调用SHA1类中的dofinal方法产生160bit数据作为一个5元素的int型数组作为OTP参数。
<img src ="http://www.blogjava.net/nanikenny/aggbug/338773.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nanikenny/" target="_blank">赵朋川</a> 2010-11-23 12:28 <a href="http://www.blogjava.net/nanikenny/archive/2010/11/23/338773.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OTP之counter存储和处理</title><link>http://www.blogjava.net/nanikenny/archive/2010/11/23/338772.html</link><dc:creator>赵朋川</dc:creator><author>赵朋川</author><pubDate>Tue, 23 Nov 2010 04:17:00 GMT</pubDate><guid>http://www.blogjava.net/nanikenny/archive/2010/11/23/338772.html</guid><wfw:comment>http://www.blogjava.net/nanikenny/comments/338772.html</wfw:comment><comments>http://www.blogjava.net/nanikenny/archive/2010/11/23/338772.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nanikenny/comments/commentRss/338772.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nanikenny/services/trackbacks/338772.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; &nbsp;OTP的counter为一个long型64位数据，每次产生一个新OTP后，counter值做自加一处理。此程序的counter采用android中轻量级存储sharedpreference进行保存。首先建立存储文件夹，在文件夹下建立名为COUNTER的存储变量，在调用OTP产生程序时，首先将COUNER的值从文件夹中读出，为一个String类型，利用命令Long.parseLong（）方法将其转换为long型整数作为OTP程序的参数参与运算，然后COUNTER自加，转换成String类型后保存到轻量级存储文件夹中的ＣＯＵＮＴＥＲ内，为下次调用准备。
<div>&nbsp;&nbsp; &nbsp;在重置ｃｏｕｎｔｅｒ的程序中，将ＴｅｘｔＶｉｅｗ中的值利用gettext()命令读出，利用toString命令转换成String类型后存储在COUNTER中。对于输入的整数值不能超过Long型整数的范围，在存储之前需要对输入的整数进行相关判断：将输入的整数前面补零和2的64次方减一（18446744073709551615）进行字符串比较，如果输入的整数大或者字符串长度超过20则提醒用户输入错误，重新输入。</div>
<img src ="http://www.blogjava.net/nanikenny/aggbug/338772.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nanikenny/" target="_blank">赵朋川</a> 2010-11-23 12:17 <a href="http://www.blogjava.net/nanikenny/archive/2010/11/23/338772.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>