123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- 江苏中石化支付功能授权码
- 授权码保存文件
- /mnt/flash/SINOPEC/authorization
- 保存内容:
- 功能号4字节(0001),授权码(8位:asc),换行符
- 。。。
- 8位源数据,前6位为CPU_ID;末2位为功能号码
- CPU_ID每位值加上0x11后展示给UI
- 密钥
- TKHenShanTQC2022
- 1、计算获取授权码函数
- void GetCalAuthCode(unsigned short func_num ,char *str_CalCode)
- {
- 计算授权码
- }
- 2、匹配授权码是否正确函数
- BOOL CheckAuthorizeCode(char *menu_id,const char *value){}
- 系统启动时调用此函数校验授权码是否正确存在,不存在则禁止此功能的使能
- 菜单输入授权码时调用,判断授权码正确,则使能此功能
- 并保存此授权码
- 3、启动时校验授权码是否存在并且正确,若不正确则禁止使能该功能
- BOOL CheckAuthCodeOK(char *menu_id)
- 4、获取CPUID转换供给UI显示
- void CPUIDConvert(char *menu_id)
- ==================授权码生成规则:==============================
- 一、从油机菜单中获取ID,输入到PC工具中,PC工具根据此ID每个字节的16进制码减去0x11得到输入UUID
- 二、UUID(6字节)+功能码(2字节BCD码)组成8字节加密输入源
- 三、采用3DES以密钥TKHenShanTQC2022加密输入源得出的字符串,获取授权码
- 四、3DES加密计算后得到的字符串取前六个数字,如果数字不够六个,则从第一个英文字母取其ASC16(大写)进制值的高低4位值转成字符后赋值补种不够的数字。
- 如"A"十六进制为0x41,则取值后为"4"和"1"
- ======修改增加菜单:
- 添加一个菜单,在使能前需要输入授权码
- 增加029k00 的下一级菜单029k10作为配置开关使能
- 弹出输入授权码菜单时,
- \Region\China\languages\China_dispenser_text.ini
- [029k00]
- T1=1 请输入授权码:
- [029k10]
- T1=1 关闭
- T2=2 开启
- ===========xml:
- \Region\China\menu\dispenser_menu.xml
- <Menu_029k00>
- <menu ID="029k00" prev_menu="029000" next_menu="029k10" type="text">
- <title>[T1]</title>
- <text command="command=CheckAuthorizeFunc"/>
- </menu>
- </Menu_029k00>
- <Menu_029k10>
- <menu ID="029k10" prev_menu="029k00" next_menu="029k10" type="single_select">
- <title>[T1]</title>
- <title>[T2]</title>
- </menu>
- </Menu_029k10>
- ==========xsl:
- E:\Work\ubuntuMnt\TQC_Resource\Region\China\menu\dispenser_menu_xsl.xml
- <Menu_029k00>
- <xsl:variable name="Dynamic_Menu">/menu_ref/Operating_Menu.xml</xsl:variable>
- <xsl:variable name="Access_File">/menu_ref/Operating_Access.xml</xsl:variable>
- <xsl:variable name="cpu_id" select="document($Dynamic_Menu)//SETUP/Backup_Restore/cpu_id"/>
- <xsl:variable name="readonly" select="document($Access_File)//CURRENT_ACCESS_LEVEL/Level3"/>
- <menu id="{@ID}" prev_menu="{@prev_menu}" next_menu="{@next_menu}" type="{@type}" display="UI">
- <xsl:attribute name="readonly"><xsl:value-of select="$readonly='RW'"/></xsl:attribute>
- <xsl:variable name="auth_code" select="document($Dynamic_Menu)//CONFIGURATION/AUTHORIZE_FUNC_CODE"/>
- <text><xsl:value-of select="$cpu_id"/></text>
- <xsl:copy-of select="title[1]"/>
- <text>
- <xsl:attribute name="command">min=0;max=9999999999;
- type=int;len=10;file=Operating_Menu.xml;path=//CONFIGURATION/AUTHORIZE_FUNC_CODE;value=<xsl:value-of select="$auth_code"/>
- </xsl:attribute>******</text>
- </menu>
- </Menu_029k00>
- <Menu_029k10>
- <xsl:variable name="Config_File">/home/TQC/Appl/UTN11/Operating_Config.xml</xsl:variable>
- <xsl:variable name="Access_File">/home/TQC/Appl/UTN11/Operating_Access.xml</xsl:variable>
- <xsl:variable name="readonly" select="document($Access_File)//CURRENT_ACCESS_LEVEL/Level3"/>
- <menu id="{@ID}" prev_menu="{@prev_menu}" next_menu="{@next_menu}" type="{@type}" display="UI">
- <xsl:attribute name="readonly">
- <xsl:value-of select="$readonly='RW'"/>
- </xsl:attribute>
- <xsl:variable name="check" select="document($Config_File)//SINOPEC_SETTING/OPTIONAL_FUNCTIONS"/>
- <radio>
- <xsl:attribute name="command">checked=<xsl:value-of select="$check/name[1]=$check/function[@id='22']/value"/>;value=<xsl:value-of select="$check/name[1]"/>;file=Operating_Config.xml;path=//SINOPEC_SETTING/OPTIONAL_FUNCTIONS/function[@id='22']/value</xsl:attribute>
- <xsl:value-of select="title[1]"/>
- </radio>
- <radio>
- <xsl:attribute name="command">checked=<xsl:value-of select="$check/name[2]=$check/function[@id='22']/value"/>;value=<xsl:value-of select="$check/name[2]"/>;file=Operating_Config.xml;path=//SINOPEC_SETTING/OPTIONAL_FUNCTIONS/function[@id='22']/value</xsl:attribute>
- <xsl:value-of select="title[2]"/>
- </radio>
- </menu>
- </Menu_029k10>
- VWWIGCAIVGCIAAAB
|