本站提倡有节制游戏,合理安排游戏时间,注意劳逸结合。

【oa 系统 源码】【c11源码】【美术网站源码】ecc 校验 源码

2024-12-27 23:45:55 来源:知识 分类:知识

1.什么是验源ECC内存?
2.如何破解ECC6.0不用申请Access key
3.求一个基于openssl写的ecc曲线的源代码

ecc 校验 源码

什么是ECC内存?

       ECC内存是带ECC校正的内存

       ECC是“Error Checking and Correcting”的简写,中文名称是验源“错误检查和纠正”。ECC是验源一种能够实现“错误检查和纠正”的技术,ECC内存就是验源应用了这种技术的内存,一般多应用在服务器及图形工作站上,验源这将使整个电脑系统在工作时更趋于安全稳定。验源oa 系统 源码

       要了解ECC技术,验源就不能不提到Parity(奇偶校验)。验源在ECC技术出现之前,验源内存中应用最多的验源是另外一种技术,就是验源Parity(奇偶校验)。我们知道,验源在数字电路中,验源最小的验源数据单位就是叫“比特(bit)”,也叫数据“位”,验源“比特”也是内存中的最小单位,它是通过“1”和“0”来表示数据高、低电平信号的。在数字电路中8个连续的c11源码比特是一个字节(byte),在内存中不带“奇偶校验”的内存中的每个字节只有8位,若它的某一位存储出了错误,就会使其中存储的相应数据发生改变而导致应用程序发生错误。而带有“奇偶校验”的内存在每一字节(8位)外又额外增加了一位用来进行错误检测。比如一个字节中存储了某一数值(1、0、1、0、1、0、1、1),把这每一位相加起来(1+0+1+0+1+0+1+1=5)。若其结果是奇数,对于偶校验,校验位就定义为1,反之则为0;对于奇校验,则相反。美术网站源码当CPU返回读取存储的数据时,它会再次相加前8位中存储的数据,计算结果是否与校验位相一致。当CPU发现二者不同时就作出视图纠正这些错误,但Parity有个缺点,当内存查到某个数据位有错误时,却并不一定能确定在哪一个位,也就不一定能修正错误,所以带有奇偶校验的内存的主要功能仅仅是“发现错误”,并能纠正部分简单的错误。

       通过上面的分析我们知道Parity内存是通过在原来数据位的基础上增加一个数据位来检查当前8位数据的正确性,但随着数据位的增加Parity用来检验的数据位也成倍增加,就是说当数据位为位时它需要增加2位用于检查,当数据位为位时则需增加4位,依此类推。特别是当数据量非常大时,数据出错的几率也就越大,对于只能纠正简单错误的密集架源码奇偶检验的方法就显得力不从心了,正是基于这样一种情况,一种新的内存技术应允而生了,这就是ECC(错误检查和纠正),这种技术也是在原来的数据位上外加校验位来实现的。不同的是两者增加的方法不一样,这也就导致了两者的主要功能不太一样。它与Parity不同的是如果数据位是8位,则需要增加5位来进行ECC错误检查和纠正,数据位每增加一倍,ECC只增加一位检验位,也就是说当数据位为位时ECC位为6位,位时ECC位为7位,数据位为位时ECC位为8位,依此类推,数据位每增加一倍,ECC位只增加一位。总之,在内存中ECC能够容许错误,iapp源码大师下载并可以将错误更正,使系统得以持续正常的操作,不致因错误而中断,且ECC具有自动更正的能力,可以将Parity无法检查出来的错误位查出并将错误修正。

       2 ECC(Elliptic Curve Cryptosystems )椭圆曲线密码体制

       年,美国SUN公司将其开发的椭圆加密技术赠送给开放源代码工程

       公钥密码体制根据其所依据的难题一般分为三类:大整数分解问题类、离散对数问题类、椭圆曲线类。有时也把椭圆曲线类归为离散对数类。

       椭圆曲线密码体制来源于对椭圆曲线的研究,所谓椭圆曲线指的是由韦尔斯特拉斯(Weierstrass)方程:

       y2+a1xy+a3y=x3+a2x2+a4x+a6 (1)

       所确定的平面曲线。其中系数ai(I=1,2,…,6)定义在某个域上,可以是有理数域、实数域、复数域,还可以是有限域GF(pr),椭圆曲线密码体制中用到的椭圆曲线都是定义在有限域上的。

       椭圆曲线上所有的点外加一个叫做无穷远点的特殊点构成的集合连同一个定义的加法运算构成一个Abel群。在等式

       mP=P+P+…+P=Q (2)

       中,已知m和点P求点Q比较容易,反之已知点Q和点P求m却是相当困难的,这个问题称为椭圆曲线上点群的离散对数问题。椭圆曲线密码体制正是利用这个困难问题设计而来。椭圆曲线应用到密码学上最早是由Neal Koblitz 和Victor Miller在年分别独立提出的。

       椭圆曲线密码体制是目前已知的公钥体制中,对每比特所提供加密强度最高的一种体制。解椭圆曲线上的离散对数问题的最好算法是Pollard rho方法,其时间复杂度为,是完全指数阶的。其中n为等式(2)中m的二进制表示的位数。当n=, 约为,需要1.6x MIPS 年的时间。而我们熟知的RSA所利用的是大整数分解的困难问题,目前对于一般情况下的因数分解的最好算法的时间复杂度是子指数阶的,当n=时,需要2xMIPS年的时间。也就是说当RSA的密钥使用位时,ECC的密钥使用位所获得的安全强度还高出许多。它们之间的密钥长度却相差达9倍,当ECC的密钥更大时它们之间差距将更大。更ECC密钥短的优点是非常明显的,随加密强度的提高,密钥长度变化不大。

       德国、日本、法国、美国、加拿大等国的很多密码学研究小组及一些公司实现了椭圆曲线密码体制,我国也有一些密码学者做了这方面的工作。许多标准化组织已经或正在制定关于椭圆曲线的标准,同时也有许多的厂商已经或正在开发基于椭圆曲线的产品。对于椭圆曲线密码的研究也是方兴未艾,从ASIACRYPTO’上专门开辟了ECC的栏目可见一斑。

       在椭圆曲线密码体制的标准化方面,IEEE、ANSI、ISO、IETF、ATM等都作了大量的工作,它们所开发的椭圆曲线标准的文档有:IEEE P Pa、ANSI X9. X9.、 ISO/IEC等。

       年5月日中国颁布的无线局域网国家标准 GB. 中,包含了全新的WAPI(WLAN Authentication and Privacy Infrastructure)安全机制,能为用户的WLAN系统提供全面的安全保护。这种安全机制由 WAI和WPI两部分组成,分别实现对用户身份的鉴别和对传输的数据加密。WAI采用公开密钥密码体制,利用证书来对WLAN系统中的用户和AP进行认证。证书里面包含有证书颁发者(ASU)的公钥和签名以及证书持有者的公钥和签名,这里的签名采用的就是椭圆曲线ECC算法。

       加拿大Certicom公司是国际上最著名的ECC密码技术公司,已授权多家企业使用ECC密码技术,包括Cisco 系统有限公司、摩托罗拉、Palm等企业。Microsoft将Certicom公司的***嵌入微软视窗移动系统中。

       ECC :engine control center发动机控制中心,主要适用于民航

       ECC :ERP Central Componet, 企业资源计划核心组件(参考资源SAP教程)

       3 ECC: Embedded Control Channel 嵌入控制信道

        SDH网络中的ECC是传送操作、管理和维护(OAMP)信息的逻辑信道。它以SDH中的数据通信信道(DCC)作为其物理通路。SDH ECC 协议栈是以OSI参考模型为基础的,协议的设计方法与当前管理系统的面向对象是一致的。ECC协 议栈的应用层包含公共管理信息服务单元(CMISE),还包含支持CMICE的远程操作服务单元(ROSE)和联系控制服务单元(ACSE)。表示层、会 话层和传送层提供支持ROSE和ACSE所需的面向连接的服务。其中传送层还包括附加协议单元,使得在由无连接网络层协议(CLNP)操作时可提供连接模 式服务。数据链路层采用Q.和Q.中所规定的D信道链路接入程序(LAPD),物理通路采用SDH DCC

如何破解ECC6.0不用申请Access key

       ã€€ã€€ä¸€ï¼šåŽ»æŽ‰æƒé™åˆ¤æ–­æ–‡ä»¶LSKEYF的只读属性:

       ã€€ã€€1,Tcode处输入SE回车(Tcode处就是指登陆sap后界面上放的可输入框)。

       ã€€ã€€2,按F6(Tips&Tricks)(这里2,3步是以IDES4.7c为标准的,如果你用的4.6,按f6后会出现一个列表,随便选一个进入,会出现一个分为左右的程序显示框,先把左右的程序全部删除掉,然后参照第三步继续。ecc6.0与本4.7基本相同)

       ã€€ã€€3,在右边写下面一段程序,

       ã€€ã€€Update PROGDIR set edtx = ''

       ã€€ã€€Where

       ã€€ã€€name = 'LSKEYF'

       ã€€ã€€And

       ã€€ã€€state = 'A'.

       ã€€ã€€4,F8执行,这时文件LSKEYF的Editor lock就会打开,也就是说将这个文件更改为可以编辑。等于windows下面取消只读权限。

       ã€€ã€€äºŒï¼šåœ¨æƒé™åˆ¤æ–­æ–‡ä»¶é‡Œé¢åŠ ä¸Šæ–­ç‚¹ï¼Œé˜»æ–­æƒé™åˆ¤æ–­ã€‚

       ã€€ã€€5,返回到起始页面,Tcode输入SE回车。

       ã€€ã€€6,程序输入LSKEYF。

       ã€€ã€€7,点display(显示)。

       ã€€ã€€8,找到 JUMP_THE_WALL 块,

       ã€€ã€€ç„¶åŽåœ¨è¿™å—中找到下面这段

       ã€€ã€€CALL 'GET_DEVELOPER_KEY' ID 'NAME' FIELD 'ABCDEFGHIJKL'

       ã€€ã€€ID 'CUSTID' FIELD ''

       ã€€ã€€ID 'KEY' FIELD DUMMY_KEY.

       ã€€ã€€9,把光标放在dummy_key后面.点击页面上的红色stop(ecc6.0里面没有红色stop,但是有两个“添加断点”,选第二个吧,第一个没有试),在这里添加一个断点,此时上面的最后一行会变为黄色。

       ã€€ã€€ï¼Œç‚¹å‡»åŽé¢ä¸€ä¸²å›¾æ ‡ä¸­å€’数第四个(创建新的会话),会出现一个新的操作界面窗口,在新窗口的Tcode输入se回车。(这里如果不这样打开新窗口的话,有可能会造成不能进入断点的状况,我破解6.0时出现过。)

       ã€€ã€€ä¸‰ï¼šé€æ­¥ä¿®æ”¹æƒé™åˆ¤æ–­æ–‡ä»¶ä¸­çš„判断参数的值,达到绕过权限判断的目的。

       ã€€ã€€ï¼Œç¨‹åºè¾“å…¥LSKEYF。点change(修改),程序会进入断点。

       ã€€ã€€ï¼Œæ­¤æ—¶ç•Œé¢ä¸‹é¢æœ‰è¿žç»­å››è¡Œç™½è‰²çš„输入框,后面是四行灰色的框。在第一个白色框里面输入sy-subrc回车。(在ecc6.0里面,这里的白色输入框在右边,输入sy-subrc回车后,后面的灰框并不会变成白色,需要双击后面的铅笔才可以。更改后按回车确认。继续步)

       ã€€ã€€ï¼Œæ­¤æ—¶è¯¥è¡ŒåŽé¢çš„原本灰色的框会变白色,并且出现一个值,将这个值改为0并点击后面的铅笔进行保存。(6.0参照第步)

       ã€€ã€€ï¼ŒæŒ‰f6(单步执行程序),如果输入框中的0变成其它值,将它再改成0丙点击后面的铅笔进行保存。(6.0参照第步)

       ã€€ã€€ï¼Œå†æ¬¡æŒ‰ä¸€ä¸‹f6,这个值将不再变化(我总共改了两次0),如果程序跳转到endform这个值也没有改变,说明更改成功了。按f8(从断点开始运行完程序)。

       ã€€ã€€ï¼Œä¸Šæ­¥æŒ‰f8后,程序会跳出一个或者几个信息框,不必理会,确认,就会出现一个白底灰字的界面,里面是程序源代码,但因为不能修改,所以是灰色的。

       ã€€ã€€å››ï¼šé€šè¿‡æ’入可执行代码的方法修改权限判断文件,一劳永逸。

       ã€€ã€€ï¼Œè¿™æ—¶è¿˜æ˜¯æ‰¾åˆ°ä¸Šæ¬¡æ·»åŠ æ–­ç‚¹é‚£é‡Œï¼Œ

       ã€€ã€€CALL 'GET_DEVELOPER_KEY' ID 'NAME' FIELD 'ABCDEFGHIJKL'

       ã€€ã€€ID 'CUSTID' FIELD ''

       ã€€ã€€ID 'KEY' FIELD DUMMY_KEY.

       ã€€ã€€æŠŠå…‰æ ‡æ”¾åœ¨dummy_key.后面,点击界面上的“插入”按钮(快捷键ctrl+shift+f8),屏幕中就会出现

       ã€€ã€€*{ INSERT rightboy 1

       ã€€ã€€

*

       ã€€ã€€*} INSERT

       ã€€ã€€å…¶ä¸­ç¬¬ä¸€è¡Œçš„后面那串字符串可能会不一样。这时只有中间的*那一行是可以输入的,将*删掉,加入

       ã€€ã€€sy-subrc = 0.

       ã€€ã€€ä¹Ÿå°±æ˜¯å°†åˆšæ‰çš„内容更改为如下:

       ã€€ã€€*{ INSERT rightboy

       ã€€ã€€sy-subrc = 0.

       ã€€ã€€*} INSERT

       ã€€ã€€ï¼Œç‚¹å‡»ä¿å­˜ï¼Œç¨‹åºä¼šå†æ¬¡è·³åˆ°æ–­ç‚¹ï¼ŒæŒ‰ç…§-的步骤继续更改那个值为0并继续,最后会提示保存成功。(如果提示选择session,可以自己点击"新建"随便建立一个,摸索两下就能搞定,此处不再赘述)

       ã€€ã€€ï¼Œç„¶åŽç‚¹å‡»ç¨‹åº-激活(快捷键ctrl+f3)(这里,我在破解另外一个4.6c的时候“激活”按钮并不可能,其实此处激活是自动的,不必理会,你会看到显示的程序名的后面有一个“活动的”或者“active”的标记,如果没有,“激活”按钮一定可用),如果还跳到断点,请继续按照上述步骤更改值,最后会提示激活成功。

       ã€€ã€€ï¼Œå…³é—­æ‰€æœ‰çš„ides登陆界面,重新登陆ides,Tcode输入se回车,程序输入LSKEYF。点display(显示)。找到刚才修改的地方,应该发现刚才的添加成功了。

       ã€€ã€€ï¼Œæˆ‘通过破解大致了解了这个程序文件的内容,这程序就是ides判断是否有key的判断程序,当sy-subrc = 0的时候,就有权限访问,如果不满足一些条件,sy-subrc 就会改变,所以在这里强制它变为0,就等于破解掉了。于是我就重复步骤将原码变成下列的样子:

       ã€€ã€€CALL 'GET_DEVELOPER_KEY' ID 'NAME' FIELD 'ABCDEFGHIJKL'

       ã€€ã€€ID 'CUSTID' FIELD ''

       ã€€ã€€ID 'KEY' FIELD DUMMY_KEY.

       ã€€ã€€*{ INSERT rightboy 1

       ã€€ã€€sy-subrc = 0.

       ã€€ã€€*} INSERT

       ã€€ã€€CHECK SY-SUBRC EQ 2. "customer system!

       ã€€ã€€*{ INSERT rightboy 2

       ã€€ã€€sy-subrc = 0.

       ã€€ã€€*} INSERT

       ã€€ã€€MOVE SPACE TO DUMMY_KEY.

       ã€€ã€€*{ INSERT rightboy 3

       ã€€ã€€sy-subrc = 0.

       ã€€ã€€*} INSERT

       ã€€ã€€RC = 0.

       ã€€ã€€ENDFORM. " JUMP_THE_WALL

       ã€€ã€€ä»¥ä¸Šä¸€åˆ‡æ­¥éª¤å®Œæ¯•ï¼Œæˆ‘后来又破解了几个不同版本的系统,并将上述步骤完善了一下,4.6,4.7,6.0都可以用此方法破解,其中比较关键的是第一步,去掉LSKEYF文件的editor lock,其他步骤大同小异

求一个基于openssl写的ecc曲线的源代码

       下面的例子生成两对ECC密钥,并用它做签名和验签,并生成共享密钥。

       #include <string.h>

       #include <stdio.h>

       #include <openssl/ec.h>

       #include <openssl/ecdsa.h>

       #include <openssl/objects.h>

       #include <openssl/err.h>

       int main()

       {

        EC_KEY *key1,*key2;

        EC_POINT *pubkey1,*pubkey2;

        EC_GROUP *group1,*group2;

        int ret,nid,size,i,sig_len;

        unsigned char*signature,digest[];

        BIO *berr;

        EC_builtin_curve *curves;

        int crv_len;

        char shareKey1[],shareKey2[];

        int len1,len2;

        /* 构造EC_KEY数据结构 */

        key1=EC_KEY_new();

        if(key1==NULL)

        {

        printf("EC_KEY_new err!\n");

        return -1;

        }

        key2=EC_KEY_new();

        if(key2==NULL)

        {

        printf("EC_KEY_new err!\n");

        return -1;

        }

        /* 获取实现的椭圆曲线个数 */

        crv_len = EC_get_builtin_curves(NULL, 0);

        curves = (EC_builtin_curve *)malloc(sizeof(EC_builtin_curve) * crv_len);

        /* 获取椭圆曲线列表 */

        EC_get_builtin_curves(curves, crv_len);

        /

*

        nid=curves[0].nid;会有错误,原因是密钥太短

        */

        /* 选取一种椭圆曲线 */

        nid=curves[].nid;

        /* 根据选择的椭圆曲线生成密钥参数group */

        group1=EC_GROUP_new_by_curve_name(nid);

        if(group1==NULL)

        {

        printf("EC_GROUP_new_by_curve_name err!\n");

        return -1;

        }

        group2=EC_GROUP_new_by_curve_name(nid);

        if(group1==NULL)

        {

        printf("EC_GROUP_new_by_curve_name err!\n");

        return -1;

        }

        /* 设置密钥参数 */

        ret=EC_KEY_set_group(key1,group1);

        if(ret!=1)

        {

        printf("EC_KEY_set_group err.\n");

        return -1;

        }

        ret=EC_KEY_set_group(key2,group2);

        if(ret!=1)

        {

        printf("EC_KEY_set_group err.\n");

        return -1;

        }

        /* 生成密钥 */

        ret=EC_KEY_generate_key(key1);

        if(ret!=1)

        {

        printf("EC_KEY_generate_key err.\n");

        return -1;

        }

        ret=EC_KEY_generate_key(key2);

        if(ret!=1)

        {

        printf("EC_KEY_generate_key err.\n");

        return -1;

        }

        /* 检查密钥 */

        ret=EC_KEY_check_key(key1);

        if(ret!=1)

        {

        printf("check key err.\n");

        return -1;

        }

        /* 获取密钥大小 */

        size=ECDSA_size(key1);

        printf("size %d \n",size);

        for(i=0;i<;i++)

        memset(&digest[i],i+1,1);

        signature=malloc(size);

        ERR_load_crypto_strings();

        berr=BIO_new(BIO_s_file());

        BIO_set_fp(berr,stdout,BIO_NOCLOSE);

        /* 签名数据,本例未做摘要,可将digest中的数据看作是sha1摘要结果 */

        ret=ECDSA_sign(0,digest,,signature,&sig_len,key1);

        if(ret!=1)

        {

        ERR_print_errors(berr);

        printf("sign err!\n");

        return -1;

        }

        /* 验证签名 */

        ret=ECDSA_verify(0,digest,,signature,sig_len,key1);

        if(ret!=1)

        {

        ERR_print_errors(berr);

        printf("ECDSA_verify err!\n");

        return -1;

        }

        /* 获取对方公钥,不能直接引用 */

        pubkey2 = EC_KEY_get0_public_key(key2);

        /* 生成一方的共享密钥 */

        len1=ECDH_compute_key(shareKey1, , pubkey2, key1, NULL);

        pubkey1 = EC_KEY_get0_public_key(key1);

        /* 生成另一方共享密钥 */

        len2=ECDH_compute_key(shareKey2, , pubkey1, key2, NULL);

        if(len1!=len2)

        {

        printf("err\n");

        }

        else

        {

        ret=memcmp(shareKey1,shareKey2,len1);

        if(ret==0)

        printf("生成共享密钥成功\n");

        else

        printf("生成共享密钥失败\n");

        }

        printf("test ok!\n");

        BIO_free(berr);

        EC_KEY_free(key1);

        EC_KEY_free(key2);

        free(signature);

        free(curves);

        return 0;

       }

相关推荐
一周热点