【flyme源码编译】【源码纹底是什么样的鞋底】【路由器管理器易语言源码】curve源码

2024-12-24 10:21:00 来源:cadc 开发源码 分类:探索

1.求一个基于openssl写的ecc曲线的源代码
2.使用python二次开发解决abaqus的mises曲线绘制
3.Python机器学习系列拟合和回归傻傻分不清?一文带你彻底搞懂它

curve源码

求一个基于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);

        /* 签名数据,本例未做摘要,flyme源码编译可将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;

       }

使用python二次开发解决abaqus的mises曲线绘制

       在ABAQUS中,处理Mises应力问题时,通常需要从精确积分点的解出发,然后通过外推获取节点的应力值。节点Mises应力在XYDATE中可能显示多个值,而高斯积分点则只给出一个。然而,想要获取模型整体最大Mises应力的全局视角,由于XYDATE依赖于固定节点或单元,这一需求就显得复杂了。

       实际上,ABAQUS的源码纹底是什么样的鞋底结果文件仅包含高斯积分点的应力数据。因此,通过Python的二次开发,我们实现了在所有增量步下获取基于积分点的Mises应力表格输出,并能查找最大值。目标有两个:

       首先,创建一个新的结构树XYDATE,其中X轴为所有增量步或时间,Y轴表示每个步或时间点模型的最大积分点Mises应力。

       其次,路由器管理器易语言源码确定模型中Mises应力最大的单元编号、对应的步和帧。

       例如,在一个螺栓工况中,有预紧、紧固、固定螺栓长度和加载四个步骤。具体操作如下:

       打开ABAQUS的ODB文件。

       使用我们开发的论坛源码数据库下载安装插件MaxMisesCurve,选择默认设置,然后点击确认。

       稍等片刻,插件会显示目标2的结果,即最大应力的相关信息。

       在结构树中找到新生成的XYDATE,注意这里的X轴不是实际的时间步长,而是以增量的方式表示(如总时间的五个增量点)。

       绘制出XYDATE曲线,图片素材库源码哪里找观察最大Mises应力的变化趋势。

       对比结果,通常在load载荷步的第一个帧,应力值达到最大。通过切换到单元积分点应力云图,进一步确认这一点。

       最后,可以比较不同帧的应力分布,确认工具的准确性。

       插件源代码提供了一个实现这些功能的可能方式,通过它,我们能够更直观地理解和分析ABAQUS中的Mises应力分布情况。

Python机器学习系列拟合和回归傻傻分不清?一文带你彻底搞懂它

       在Python机器学习的探索中,理解拟合与回归这两个概念至关重要。它们虽然都涉及数据与模型的关联,但有着明确的差异。拟合是个广义概念,涵盖了将离散数据点通过线性或非线性方式映射到一条曲线的整个过程,旨在减小数据点与拟合曲线的偏差。回归分析则是拟合的一种具体实现,它探究变量间的定量关系,以建立模型。

       回归拟合则根据复杂度分为几个类别。一元线性回归如np.polyfit方法,通过求解系数来拟合数据,如法一中的[8., -.],sklearn的LinearRegression方法也得到类似结果。曲线拟合如curve_fit则适用于非线性模型,如法三中的[8., -.]。一元多项式回归,如2次多项式,np.polyfit、sklearn的LinearRegression和curve_fit都能得到系数,只是形式不同。

       对于更复杂的函数拟合,如指数函数,curve_fit依然是首选,如得到的最佳系数[2., 0.]。这些方法不仅适用于一元,也是多元回归建模的基础。想深入了解数据集和源码的朋友,可以随时联系作者获取更多信息。

更多资讯请点击:探索

推荐资讯

广东深圳:“四化”举措监管小作坊食品安全

中国消费者报深圳讯记者黄劼)记者近日从广东省深圳市市场监管局了解到,该局通过“固化主体责任、细化监管措施、优化管理服务、强化示范引领”的“四化”举措,打造食品小作坊提质进阶的监管,进一步守护好消费者“

長程密閉空間、肢體接觸高風險 羅一鈞:2例本土BA.5個案無社區接觸

國內今6)天新增2例Omicron亞型變異株BA.5本土病例,醫療應變組副組長羅一鈞表示,2人曾從桃園機場接送境外染疫家人返回台中,密閉空間、長時間相處,恐因此換氣通風傳播,加上家人難免有肢體接觸,目

以色列決定徵召預備役士兵加強防空力量

以色列軍方當地時間4月3日宣布,決定徵召預備役士兵加強防空力量。以軍方3日在聲明中說,在進行形勢評估後,決定增加兵力並徵召預備役士兵加入防空部隊。以色列媒體報道稱,以軍此舉是為了應對來自伊朗的威脅。伊