AES 与 SM4 加密算法:深度解析与对比

🧑 博主简介:CSDN博客专家历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程高并发设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea

在这里插入图片描述


在这里插入图片描述

AES 与 SM4 加密算法:深度解析与对比

一、引言

在当今数字化飞速发展的时代,信息安全成为了至关重要的基石。无论是个人的隐私数据、企业的商业机密,还是国家的关键信息,都需要强大的加密技术来保驾护航。加密算法犹如信息世界的守护卫士,将明文数据转化为密文,使得未经授权者难以窥探其中的奥秘。

AES(Advanced Encryption Standard)加密算法,作为全球范围内广泛应用的加密标准,有着举足轻重的地位。它是由美国国家标准与技术研究院(NIST)于 2001 年确定的新一代加密标准,旨在取代旧有的 DES(Data Encryption Standard)算法。AES 凭借其出色的安全性、高效性和广泛的适应性,在众多领域得到了大规模的应用,从网络通信中的数据加密传输,到金融领域的交易安全保障,再到各类电子设备的数据存储加密等,都有 AES 的身影。其加密原理基于对称加密思想,通过多轮的加密变换,将输入的明文逐步转换为难以破解的密文,在不同的密钥长度下(如 128 位、192 位和 256 位),提供了不同级别的安全防护。

SM4 加密算法,则是我国自主研发的一种对称加密算法,在国内的信息安全体系中扮演着核心角色。随着我国信息技术产业的不断崛起和对信息安全自主可控需求的日益增长,SM4 应运而生。它在国内的政务、金融、能源等关键领域有着广泛的应用,保障着我国重要信息基础设施的安全。SM4 算法的设计基于特定的数学结构和变换,通过多轮迭代运算对数据进行加密处理,其密钥长度固定为 128 位,能够有效地抵御多种形式的密码攻击。

在加密算法的浩瀚星空中,AES 和 SM4 无疑是两颗耀眼的明星。深入理解它们的原理、特性、应用场景以及性能差异,对于信息安全领域的专业人士以及广大关注信息安全的用户来说,都具有极为重要的意义。本文将对 AES 和 SM4 加密算法进行全面而深入的探讨,从各个维度对它们进行剖析和对比,为读者揭开这两种加密算法的神秘面纱。

二、AES 加密算法

在这里插入图片描述

2.1 算法概述

AES 是一种对称分组密码算法,这意味着加密和解密过程使用相同的密钥。它对固定长度的数据块(通常为 128 位)进行加密操作。AES 算法的设计目标是提供高强度的安全性、高效的加密和解密速度以及良好的灵活性,以适应不同的应用环境和安全需求。

2.2 加密原理

  • 字节代换(SubBytes):这是 AES 加密的第一步,将输入的 128 位数据块中的每个字节按照一个预先定义的 8 位 S 盒(Substitution Box)进行替换。S 盒的设计具有非线性特性,能够有效地混淆输入数据,增加密码分析的难度。例如,对于一个特定的字节值,通过 S 盒的映射,会得到一个全新的字节值,从而改变了数据的原始表示形式。
  • 行移位(ShiftRows):在字节代换之后,对数据块的行进行循环移位操作。具体来说,第一行保持不变,第二行循环左移 1 个字节位置,第三行循环左移 2 个字节位置,第四行循环左移 3 个字节位置。这种移位操作进一步扩散了数据在不同行之间的关系,使得加密效果更加复杂。
  • 列混合(MixColumns):此步骤将数据块中的每一列看作一个多项式,并与一个固定的多项式进行模乘法运算。通过这种方式,列混合操作在列的方向上对数据进行了再次混淆和扩散,使得数据的各个部分之间的相关性更加难以捉摸。例如,对于一个 4x4 的字节矩阵表示的数据块,每一列的四个字节经过列混合运算后,会得到全新的字节组合。
  • 轮密钥加(AddRoundKey):在每一轮加密中,将前面步骤得到的数据与当前轮的轮密钥进行逐位异或操作。轮密钥是由原始密钥通过密钥扩展算法生成的,每一轮使用不同的轮密钥。这个步骤将密钥信息融入到加密过程中,确保只有拥有正确密钥的接收方才能解密密文。

AES 算法通常会进行多轮这样的加密操作,轮数取决于密钥的长度。对于 128 位密钥,会进行 10 轮加密;192 位密钥进行 12 轮;256 位密钥进行 14 轮。

2.3 应用场景

  • 网络通信安全:在互联网通信中,如 SSL/TLS 协议(用于保障网页浏览、电子邮件等安全通信)的底层部分常采用 AES 加密算法对传输的数据进行加密,防止数据在网络传输过程中被窃取或篡改。例如,当用户在网上购物时,用户的个人信息、信用卡信息等敏感数据在客户端与服务器端之间传输时,会使用 AES 加密,确保这些信息的安全。
  • 金融领域数据保护:银行等金融机构在处理客户的账户信息、交易记录等数据时,广泛应用 AES 加密。无论是数据在内部网络中的传输,还是存储在数据库中的数据,AES 加密都能有效地防止金融数据泄露,保护客户资产安全和金融机构的信誉。例如,银行的网上银行系统在用户登录、转账等操作过程中,相关数据都经过 AES 加密处理。
  • 存储加密:在计算机存储设备上,如硬盘、移动存储介质等,AES 加密用于保护存储在其中的数据。操作系统提供的加密功能,如 Windows 的 BitLocker 和 macOS 的 FileVault,很多时候都采用 AES 加密算法来对磁盘上的数据进行加密存储。这使得即使存储设备丢失或被盗,未经授权的用户也难以获取其中的数据。

2.4 性能特点

  • 加密速度较快:AES 算法在现代计算机硬件上具有较高的加密和解密速度,尤其是在处理大量数据时表现出色。这得益于其相对简单且规整的加密结构,能够充分利用计算机的指令集并行性。例如,在多核处理器的计算机上,AES 加密可以通过多线程并行处理不同的数据块,大大提高了整体的加密效率。
  • 密钥长度灵活:AES 支持 128 位、192 位和 256 位三种不同的密钥长度。较短的密钥长度(如 128 位)在一些对性能要求较高但安全需求相对较低的场景中,可以提供较快的加密速度;而较长的密钥长度(如 256 位)则适用于对安全性要求极高的场景,如军事、国家安全等领域,虽然加密速度相对较慢,但能提供更强的抗攻击能力。

2.5 AES 算法的优势与局限

  • 优势
    • 广泛应用与成熟:AES 是国际上广泛采用的加密标准,经过了多年的实践检验和大量的安全性分析,有众多的加密库和工具支持,在不同的操作系统、编程语言和硬件平台上都能方便地实现。
    • 灵活性:支持多种密钥长度,可以根据不同的安全需求选择合适的密钥长度。例如,对于一般的非敏感数据加密,可以选择 128 位密钥以提高加密效率;而对于高度敏感的数据,如金融交易数据,可以采用 256 位密钥来增强安全性。
    • 高效性:在现代计算机硬件上,AES 算法的加密和解密速度相对较快,尤其是在有专门的硬件加密模块(如 AES-NI 指令集支持的处理器)时,能够显著提高加密和解密的性能。
  • 局限
    • 量子计算威胁:随着量子计算技术的发展,理论上量子计算机有可能在较短时间内破解 AES 算法。虽然目前实用的量子计算机尚未达到能够大规模破解 AES 的水平,但这是未来可能面临的一个潜在风险。
    • 侧信道攻击:AES 算法在某些实现环境下可能面临侧信道攻击,如通过分析加密过程中的功耗、电磁辐射等信息来获取密钥信息。虽然可以通过一些防御措施(如掩码技术等)来降低风险,但这也增加了算法实现的复杂性和成本。

2.6 AES 算法的 Java 代码示例

以下是一个使用 Java 实现 AES 加密算法的简单示例代码:

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.util.Base64;

public class AESExample {
    public static void main(String[] args) throws Exception {
        // 生成密钥
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        // 设置密钥长度为 128 位
        keyGenerator.init(128);
        SecretKey secretKey = keyGenerator.generateKey();

        // 实例化加密器
        Cipher cipher = Cipher.getInstance("AES");
        // 初始化加密器为加密模式,传入密钥
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);

        // 待加密的明文
        String plaintext = "Hello, AES Encryption!";
        // 将明文转换为字节数组
        byte[] plaintextBytes = plaintext.getBytes();
        // 进行加密操作
        byte[] ciphertextBytes = cipher.doFinal(plaintextBytes);
        // 将加密后的字节数组转换为 Base64 编码的字符串,方便显示
        String ciphertext = Base64.getEncoder().encodeToString(ciphertextBytes);
        System.out.println("加密后的密文: " + ciphertext);

        // 初始化加密器为解密模式,传入密钥
        cipher.init(Cipher.DECRYPT_MODE, secretKey);
        // 对密文进行解码,得到字节数组
        byte[] decodedCiphertextBytes = Base64.getDecoder().decode(ciphertext);
        // 进行解密操作
        byte[] decryptedBytes = cipher.doFinal(decodedCiphertextBytes);
        // 将解密后的字节数组转换为字符串
        String decryptedText = new String(decryptedBytes);
        System.out.println("解密后的明文: " + decryptedText);
    }
}

在上述代码中:

  • 首先使用 KeyGenerator 类生成一个 128 位的 AES 密钥。
  • 然后通过 Cipher 类实例化一个 AES 加密器,并分别初始化为加密模式和解密模式,传入生成的密钥。
  • 对于明文,先转换为字节数组,使用加密器的 doFinal 方法进行加密,得到密文字节数组,再转换为 Base64 编码字符串显示。
  • 解密时,先将 Base64 编码的密文解码为字节数组,再使用解密器的 doFinal 方法进行解密,最后将解密后的字节数组转换为字符串显示。

三、SM4 加密算法

在这里插入图片描述

3.1 算法概述

SM4 是我国自主设计的对称加密算法,采用分组密码体制,分组长度为 128 位,密钥长度也为 128 位。它的设计旨在满足国内信息安全领域对自主可控加密技术的需求,在国内的众多关键信息系统中得到了广泛的应用和推广。

3.2 加密原理

  • 非线性变换(T 函数):SM4 算法的核心是一个名为 T 函数的非线性变换。T 函数将输入的 32 位数据进行一系列复杂的操作,包括非线性替换、线性变换和循环移位等。首先,将输入的 32 位数据分为四个 8 位的子块,对每个子块进行 S 盒替换,这个 S 盒与 AES 的 S 盒类似,具有非线性特性,能够对数据进行混淆。然后,对替换后的结果进行线性变换和循环移位操作,最终得到 T 函数的输出。
  • 轮函数:SM4 的加密过程由 32 轮迭代的轮函数组成。在每一轮中,将 128 位的数据块分为四个 32 位的字,分别记为 X0、X1、X2、X3。轮函数的操作如下:首先计算 T(X0 XOR X1 XOR X2 XOR rk),其中 rk 是当前轮的轮密钥,XOR 表示异或运算。然后将计算结果与 X3 进行异或运算,得到新的 X0。接着,将原来的 X0 赋值给 X1,X1 赋值给 X2,X2 赋值给 X3,开始下一轮的迭代。
  • 密钥扩展:SM4 的密钥扩展算法将 128 位的原始密钥扩展成 32 轮所需的轮密钥。密钥扩展过程中使用了一些特定的常数和变换规则,确保轮密钥之间具有足够的独立性和安全性。

3.3 应用场景

  • 国内政务信息系统:在政府部门的电子政务网络中,大量的公文流转、政务数据存储与传输等环节都采用 SM4 加密算法。例如,政府部门之间的机密文件传输,使用 SM4 加密确保文件内容不被泄露,保障政务工作的安全有序进行。
  • 金融关键业务:国内的一些金融机构,尤其是在涉及核心业务系统和关键数据的处理时,逐渐开始采用 SM4 加密。例如,在金融机构内部的清算系统、核心数据库存储等方面,SM4 加密为金融数据提供了自主可控的安全保障,降低了对国外加密技术的依赖,增强了金融系统的安全性和稳定性。
  • 能源等基础设施领域:在能源行业,如电力、石油等企业的生产管理系统、数据采集与监控系统(SCADA)中,SM4 加密用于保护关键的生产数据、设备控制指令等信息。防止非法入侵和数据篡改,确保能源基础设施的安全稳定运行。

3.4 性能特点

  • 安全性高:SM4 算法经过了严格的安全性分析和测试,能够有效抵御多种密码分析攻击,如差分密码分析、线性密码分析等。其 128 位的密钥长度提供了足够的安全强度,在国内的信息安全体系中能够满足大多数关键应用场景的安全需求。
  • 与国内硬件适配性好:由于是我国自主研发的算法,SM4 在国内自主研发的芯片、加密设备等硬件上往往具有更好的适配性和性能表现。例如,一些国产的安全芯片专门针对 SM4 算法进行了优化设计,能够充分发挥 SM4 的加密性能,提高加密和解密的效率。

3.5 SM4 算法的优势与局限

  • 优势
    • 自主可控:SM4 是我国自主研发的加密算法,具有自主知识产权,在国内一些对信息安全自主性要求较高的领域应用广泛,能够有效保障国内信息系统免受国外加密技术潜在的安全威胁和限制。
    • 性能良好:在软件实现方面,SM4 算法的加密和解密速度相对较快,能够满足大多数国内应用场景的性能需求。并且随着国内硬件技术的发展,针对 SM4 算法的硬件加速模块也在不断研发和完善,将进一步提高其性能。
    • 安全性高:经过了国内相关机构的安全性评估和实践检验,在设计上采用了多种密码学技术来确保算法的安全性,如非线性变换、线性扩散等,能够有效抵御常见的密码分析攻击。
  • 局限
    • 国际应用受限:由于 SM4 是我国自主设计的算法,在国际上的应用相对较少,相关的国际标准和规范中未广泛包含 SM4,这可能导致在一些国际合作项目或涉及国际数据交换的场景中,其兼容性和认可度相对较低。
    • 生态支持相对较弱:与 AES 相比,SM4 的开源库、工具和硬件支持在国际范围内相对较少,开发人员在使用 SM4 算法时可能面临库的功能有限、文档不足等问题,这在一定程度上限制了其更广泛的应用和推广。

3.6 SM4 算法的 Java 代码示例

要在 Java 中使用 SM4 算法,需要引入相关的依赖。这里可以使用 Bouncy Castle 库,它是一个广泛使用的密码学库,支持多种加密算法包括 SM4。在 Maven 项目中,添加以下依赖:

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.72</version>
</dependency>

以下是使用 Bouncy Castle 库实现 SM4 加密算法的示例代码:

import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.crypto.engines.SM4Engine;
import org.bouncycastle.crypto.modes.CBCMode;
import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher;
import org.bouncycastle.crypto.params.KeyParameter;
import org.bouncycastle.util.encoders.Base64;

public class SM4Example {
    public static void main(String[] args) throws Exception {
        // 生成 128 位的 SM4 密钥
        byte[] key = new byte[16];
        // 这里可以使用随机数生成器等方式生成真正的密钥
        // 为了示例简单,这里只是简单初始化
        for (int i = 0; i < 16; i++) {
            key[i] = (byte) i;
        }

        // 实例化 SM4 引擎,采用 CBC 模式
        SM4Engine sm4Engine = new SM4Engine();
        CBCMode cbcMode = new CBCMode(sm4Engine);
        PaddedBufferedBlockCipher cipher = new PaddedBufferedBlockCipher(cbcMode);

        // 设置密钥参数
        CipherParameters keyParam = new KeyParameter(key);
        cipher.init(true, keyParam);

        // 待加密的明文
        String plaintext = "Hello, SM4 Encryption!";
        // 将明文转换为字节数组
        byte[] plaintextBytes = plaintext.getBytes();
        // 进行加密操作,输出字节数组
        byte[] ciphertextBytes = new byte[cipher.getOutputSize(plaintextBytes.length)];
        int length = cipher.processBytes(plaintextBytes, 0, plaintextBytes.length, ciphertextBytes, 0);
        cipher.doFinal(ciphertextBytes, length);
        // 将加密后的字节数组转换为 Base64 编码的字符串,方便显示
        String ciphertext = Base64.toBase64String(ciphertextBytes);
        System.out.println("加密后的密文: " + ciphertext);

        // 初始化加密器为解密模式,传入密钥
        cipher.init(false, keyParam);
        // 对密文进行解码,得到字节数组
        byte[] decodedCiphertextBytes = Base64.decode(ciphertext);
        // 进行解密操作,输出字节数组
        byte[] decryptedBytes = new byte[cipher.getOutputSize(decodedCiphertextBytes.length)];
        length = cipher.processBytes(decodedCiphertextBytes, 0, decodedCiphertextBytes.length, decryptedBytes, 0);
        cipher.doFinal(decryptedBytes, length);
        // 将解密后的字节数组转换为字符串
        String decryptedText = new String(decryptedBytes);
        System.out.println("解密后的明文: " + decryptedText);
    }
}

在上述代码中:

  • 首先生成一个 128 位的 SM4 密钥(这里只是简单示例,实际应用中应使用安全的密钥生成方式)。
  • 然后实例化 SM4 引擎,并采用 CBC(Cipher Block Chaining)模式,通过 PaddedBufferedBlockCipher 类来进行加密操作。
  • 对于明文,转换为字节数组后进行加密,得到密文字节数组并转换为 Base64 编码字符串显示。
  • 解密时,先将 Base64 编码的密文解码,然后进行解密操作,最后将解密后的字节数组转换为字符串显示。

四、AES 与 SM4 的性能差异

4.1 加密速度对比

  • 在通用计算机平台上,AES 由于其广泛的应用和长期的优化,在一些常见的硬件环境下,如英特尔 x86 架构处理器,其加密速度相对较快。尤其是在处理大量数据时,AES 的多轮加密结构和对硬件指令集的良好利用,使其能够高效地完成加密任务。例如,在对大文件进行加密存储时,AES 可能比 SM4 花费更少的时间。
  • 然而,在一些国产自主研发的特定硬件平台上,尤其是针对 SM4 进行了优化设计的芯片或加密设备,SM4 的加密速度可能会超过 AES。这些硬件平台能够充分发挥 SM4 算法的特性,通过专门的电路设计和指令优化,实现高效的加密运算。

4.2 安全性对比

  • AES 作为国际通用的加密标准,经过了多年的全球范围内的密码分析和攻击测试,在不同的密钥长度下都具有较高的安全性。其复杂的加密结构和多轮变换有效地抵御了各种已知的密码攻击方法。例如,在面对差分密码分析和线性密码分析时,AES 的设计使得攻击者难以找到有效的攻击路径。
  • SM4 同样具有很高的安全性,其 128 位的密钥长度和独特的加密结构能够抵御多种常见的密码攻击。并且,由于是我国自主研发的算法,其内部结构和算法细节相对保密,减少了被外部针对性攻击的风险。在国内的关键信息系统中,SM4 已经被证明能够有效地保护重要信息的安全。

4.3 资源占用对比

  • AES 在通用软件实现时,对计算机的内存和计算资源的占用相对较为稳定。其算法的复杂度决定了在不同的运行环境下,其资源消耗有一定的规律可循。例如,在普通的个人电脑上运行 AES 加密程序时,内存占用量和 CPU 使用率在加密过程中会有一个相对可预测的变化范围。
  • SM4 在一些国产硬件平台上可能具有资源占用优势,因为这些硬件平台可以针对 SM4 进行定制化的资源分配和优化。但在通用的国外硬件平台上,由于缺乏专门的优化,其资源占用可能会相对较高,例如可能会占用更多的 CPU 时间来完成相同的加密任务。

五、结论

AES 和 SM4 作为两种重要的对称加密算法,各自有着独特的优势和特点。AES 在国际上广泛应用,具有成熟的技术生态和较高的通用性,在多种通用硬件平台上表现出良好的加密速度和性能。而 SM4 作为我国自主研发的加密算法,在国内的关键信息领域发挥着不可替代的作用,其与国内硬件的适配性以及自主可控性为我国的信息安全提供了坚实的保障。

在未来的信息安全发展中,随着全球信息技术格局的不断变化和我国信息安全战略的深入推进,AES 和 SM4 可能会在不同的场景下继续发挥各自的作用,并且两者之间也可能会相互借鉴和融合。例如,在一些跨国企业的全球信息系统中,可能会同时考虑使用 AES 来满足国际业务的兼容性需求,以及 SM4 来保障在国内部分业务的自主安全。对于信息安全领域的从业者和研究人员来说,深入理解这两种算法的原理、性能和应用场景,将有助于更好地构建安全可靠的信息系统,应对日益复杂的信息安全挑战。

六、参考资料文献

AES 官方文档
SM4 官方文档
密码学相关书籍,如《密码编码学与网络安全:原理与实践》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/964209.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】线程池实现

目录 一、线程池简介线程池的核心组件实现步骤 二、C11实现线程池源码 三、线程池源码解析1. 成员变量2. 构造函数2.1 线程初始化2.2 工作线程逻辑 3. 任务提交(enqueue方法)3.1 方法签名3.2 任务封装3.3 任务入队 4. 析构函数4.1 停机控制 5. 关键技术点解析5.1 完美转发实现5…

[EAI-023] FAST,机器人动作专用的Tokenizer,提高VLA模型的能力和训练效率

Paper Card 论文标题&#xff1a;FAST: Efficient Action Tokenization for Vision-Language-Action Models 论文作者&#xff1a;Karl Pertsch, Kyle Stachowicz, Brian Ichter, Danny Driess, Suraj Nair, Quan Vuong, Oier Mees, Chelsea Finn, Sergey Levine 论文链接&…

介绍一下Mybatis的底层原理(包括一二级缓存)

表面上我们的就是Sql语句和我们的java对象进行映射&#xff0c;然后Mapper代理然后调用方法来操作数据库 底层的话我们就涉及到Sqlsession和Configuration 首先说一下SqlSession&#xff0c; 它可以被视为与数据库交互的一个会话&#xff0c;用于执行 SQL 语句&#xff08;Ex…

wx050基于django+vue+uniapp的傣族节日及民间故事推广小程序

开发语言&#xff1a;Python框架&#xff1a;djangouniappPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 后台登录界面 管理员主界面 用户管理 …

hot100(6)

51.22.括号生成 字符串回溯的典型问题 char[] path;List<String> res;int n;public List<String> generateParenthesis(int n) {this.n n;path new char[2*n];res new ArrayList<>();dfs(0,0,0);return res;}public void dfs(int index,int left, int r…

【游戏设计原理】98 - 时间膨胀

从上文中&#xff0c;我们可以得到以下几个启示&#xff1a; 游戏设计的核心目标是让玩家感到“时间飞逝” 游戏的成功与否&#xff0c;往往取决于玩家的沉浸感。如果玩家能够完全投入游戏并感受到时间飞逝&#xff0c;说明游戏设计在玩法、挑战、叙事等方面达到了吸引人的平衡…

RocketMQ面试题:进阶部分

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

Deepseek-R1 和 OpenAI o1 这样的推理模型普遍存在“思考不足”的问题

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

结构性多余到结构性消失的现象和案例

在碎片化的现象和案例中提取关联性的信息。 也就是废墟之上如何重生的问题。 碎片化无处不在&#xff0c;普通人无人可以幸免。 当AI能力越来越强大&#xff0c;如下这些都在变为现实。 生产力 98%的人是过剩劳动力 人在大规模地被废弃 当人是生产力主体的时候&#xff0c;如…

(脚本学习)BUU18 [CISCN2019 华北赛区 Day2 Web1]Hack World1

自用 题目 考虑是不是布尔盲注&#xff0c;如何测试&#xff1a;用"1^1^11 1^0^10&#xff0c;就像是真真真等于真&#xff0c;真假真等于假"这个测试 SQL布尔盲注脚本1 import requestsurl "http://8e4a9bf2-c055-4680-91fd-5b969ebc209e.node5.buuoj.cn…

【C++】P1957 口算练习题

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述输入格式&#xff1a;输出格式&#xff1a; &#x1f4af;我的做法代码实现&#xff1a; &#x1f4af;老师的做法代码实现&#xff1a; &#x1f4af;对比分析&am…

【Linux系统】信号:再谈OS与内核区、信号捕捉、重入函数与 volatile

再谈操作系统与内核区 1、浅谈虚拟机和操作系统映射于地址空间的作用 我们调用任何函数&#xff08;无论是库函数还是系统调用&#xff09;&#xff0c;都是在各自进程的地址空间中执行的。无论操作系统如何切换进程&#xff0c;它都能确保访问同一个操作系统实例。换句话说&am…

LabVIEW双光子成像系统:自主创新,精准成像,赋能科研

双光子成像系统&#xff1a;自主创新&#xff0c;精准成像&#xff0c;赋能科研 第一部分&#xff1a;概述 双光子成像利用两个低能量光子同时激发荧光分子&#xff0c;具有深层穿透、高分辨率、低光损伤等优势。它能实现活体深层组织的成像&#xff0c;支持实时动态观察&…

「全网最细 + 实战源码案例」设计模式——策略模式

核心思想 享元模式&#xff08;Flyweight Pattern&#xff09;是一种行为型设计模式&#xff0c;用于定义一系列算法或策略&#xff0c;将它们封装成独立的类&#xff0c;并使它们可以相互替换&#xff0c;而不影响客户端的代码&#xff0c;提高代码的可维护性和扩展性。 结构…

安全策略实验

安全策略实验 1.拓扑图 2.需求分析 需求&#xff1a; 1.VLAN 2属于办公区&#xff0c;VLAN 3属于生产区 2.办公区PC在工作日时间&#xff08;周一至周五&#xff0c;早8到晚6&#xff09;可以正常访问OA server其他时间不允许 3.办公区PC可以在任意时刻访问Web Server 4.生产…

一文了解边缘计算

什么是边缘计算&#xff1f; 我们可以通过一个最简单的例子来理解它&#xff0c;它就像一个司令员&#xff0c;身在离炮火最近的前线&#xff0c;汇集现场所有的实时信息&#xff0c;经过分析并做出决策&#xff0c;及时果断而不拖延。 1.什么是边缘计算&#xff1f; 边缘计算…

对象的实例化、内存布局与访问定位

一、创建对象的方式 二、创建对象的步骤: 一、判断对象对应的类是否加载、链接、初始化: 虚拟机遇到一条new指令&#xff0c;首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已经被加载、解析和初始化…

Altium Designer绘制原理图时画斜线的方法

第一步&#xff1a;检查设置是否正确 打开preferences->PCB Editor ->Interactive Routing->Interactive Routing Options->Restrict TO 90/45去掉勾选项&#xff0c;点击OK即可。如下图所示&#xff1a; 然后在划线时&#xff0c;按下shift空格就能够切换划线…

【R语言】环境空间

一、环境空间的特点 环境空间是一种特殊类型的变量&#xff0c;它可以像其它变量一样被分配和操作&#xff0c;还可以以参数的形式传递给函数。 R语言中环境空间具有如下3个特点&#xff1a; 1、对象名称唯一性 此特点指的是在不同的环境空间中可以有同名的变量出现&#x…

NeuralCF 模型:神经网络协同过滤模型

实验和完整代码 完整代码实现和jupyter运行&#xff1a;https://github.com/Myolive-Lin/RecSys--deep-learning-recommendation-system/tree/main 引言 NeuralCF 模型由新加坡国立大学研究人员于 2017 年提出&#xff0c;其核心思想在于将传统协同过滤方法与深度学习技术相结…