CD key 生成
题目描述如下:
某欧软件需要实现简易的CD-KEY算法,输入3个正整数,以空格隔开,根据者3个正整数生成的cd-key字符串。输出格式:xxxx-xxxx-xxxx-xxyy。
包含16个字符,以短划线隔开,其中,cd-key的最后两位yy是用于cd-key的自校验,确保cd-key本身是合法的。
cd-key使用的字符表:23456789ABCDEFGHJKLMNPQRSTUVWXYZ(共32个,由于1和I,0和O难以辨识,被剔除)
实现原理如下:
(1),输入3个32bit正整数,按顺序取每个正整数取低16bit,假设a,b,c,将abc串联在一起组成48bit的唤醒,然后从低到高,每次取5个bit,
用其取值作为下标,从32字符表中查出对应的字符,循环输出14个字符(提示:第一个输出的字符应该是c的低5bit)。
(2),上面输出的14个字符即cd-key的从做至右的前14个字符的ascll求和,从低到高,每5bit为下标,查表生成两个字符,作为第15,16,个cd-key
的字符即为yy
时间限制:无
内存限制:无
输入: 输入3个正整数,以空格隔开
样例输入:1 1 1
样例输出:3224-2262-2A22-J2CR
答案
python:
num=raw_input()
char_table="23456789ABCDEFGHJKLMNPQRSTUVWXYZ"
str_14=''
str_15=''
str_16=''
result=''
num2 = 0
bin_num1 = str(bin(int(num[0]))).replace('0b','')
bin_num2 = str(bin(int(num[2]))).replace('0b','')
bin_num3 = str(bin(int(num[4]))).replace('0b','')
bin_48 = bin_num1.zfill(16) + bin_num2.zfill(16) + bin_num3.zfill(16)
for i in range(14):
str_14=str_14+char_table[int(bin_48[-5:],base=2)]
bin_48 = bin_48[-5:]+bin_48[:-5]
for i in range(14):
num2 = ord(str_14[i]) +num2
tmp_str_2=str(bin(int(num2))).replace('0b','').zfill(32)[-10:]
str_15=char_table[int(tmp_str_2[-5:],base=2)]
str_16=char_table[int(tmp_str_2[:-5],base=2)]
result_tmp=str_14+str_15+str_16
for i in range (16):
if i % 4 == 0 and i!=0:
result=result+'-'+result_tmp[i]
else :
result = result+result_tmp[i]
print result
CD key 生成的更多相关文章
- Springboot集成cache的key生成策略
代码接上文:深度理解springboot集成redis缓存之源码解析 ## 1.使用SpEL表达式 @Cacheable(cacheNames = "emp",key = &quo ...
- Git SSH Key 生成步骤
it是分布式的代码管理工具,远程的代码管理是基于ssh的,所以要使用远程的git则需要ssh的配置. github的ssh配置如下: 一 . 设置git的user name和email: $ git ...
- [转] Git SSH Key 生成步骤
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...
- Github SSH 的key 生成步骤下
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...
- Git SSH Key 生成步骤及使用
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...
- github管理的建立(SSH Key生成步骤)
Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...
- Mac ssh key生成
转载https://blog.csdn.net/wangjunling888/article/details/51115659 1. 查看秘钥是否存在 打开终端查看是否已经存在SSH密钥:cd ~/. ...
- ssh key生成
Mac电脑用终端生成SSH key 访问自己的Github 字数684 阅读427 评论4 喜欢15 前言:最近有不少刚刚使用github管理代码的开发者或者新手码农在网上 问我如何关联自己的gith ...
- Git 中 SSH key 生成步骤
由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以必须要让github仓库认证你SSH key,在此之前,必须要生成SSH key. 第1步:创建SSH Key.在windows下 ...
随机推荐
- QSqlDatabase的进一步封装(多线程支持+更加简单的操作)——同时支持MySQL, SQL Server和Sqlite
开发背景: 1.直接用QSqlDatabase我觉得太麻烦了: 2.对于某些数据库,多个线程同时使用一个QSqlDatabase的时候会崩溃: 3.这段时间没什么干货放出来觉得浑身不舒服,就想写一个. ...
- [原]CAS和Shiro在spring中集成
shiro是权限管理框架,现在已经会利用它如何控制权限.为了能够为多个系统提供统一认证入口,又研究了单点登录框架cas.因为二者都会涉及到对session的管理,所以需要进行集成. Shiro在1.2 ...
- 每天学点Linux:七
Shell编程 shell变量类型: 只有字符串型,变量可以被赋值,被修改,被引用. shell变量命名方法:第一个字符为字母,其余字符可以是字母,数字或下划线. 变量引用:在变量名前加$号,代表变量 ...
- Openstack service default port
Block Storage (cinder) 8776 publicurl and adminurl Compute API (nova-api) 8773 EC2 API 8774 openstac ...
- Netfilter-packet-flow.svg
调试网络的方法:(Debugging the kernel using Ftrace) $ watch -n1 -d sudo cat /proc/net/snmp$ watch -n1 -d su ...
- 利用sass构建组件化的ui库
创建公用的Sass项目模板 在做项目时,不管什么项目,他们之间总是有一些可以共用的部分.比如说重置样式.公用样式.模块组件.UI库等.那么在Sass项目中也是如此.为了避免在每个项目中做一些相同的事情 ...
- DBCP|C3P0参数详解
1.<!-- 数据源1 --> 2. <bean id="dataSource" 3. class="org.apache.commons.dbcp.B ...
- mvc下载文件
MVC下载文件方式 方式一: public FileStreamResult DownFile(string filePath, string fileName) { string ab ...
- MD5和sha1加密算法
在很多电子商务和社区应用中,我们都要存放很多的客户的资料,其中包括了很多的隐私信息和客户不愿被别人看到的信息,当然好有客户执行各种操作的密码,此时就需要对客户的信息进行加密再存储,目前有两种比较好的加 ...
- 2014.8.20break,continue,字符串,数字和日期
(一)break与continue break——彻底终断循环 continue——中断本次循环,继续下次循环 break举例: //求100以内所有质数 ; i <= ; i++) { ;// ...