小编Tip*_*puR的帖子

C - 获取外部 IP 地址

我需要通过 C/C++ 调用获取我的公共 IP 地址。我知道作为替代方案,我可以从“http://whatismyip.akamai.com”等外部链接获取

我写了一个示例来获取外部 IP 地址。但是我的程序没有返回外部 IP 地址。我正在获取内部 IP 地址。我在这里错过了什么吗?

如果无法通过这种方式,我可以读取 DNS 并获取 IP 地址吗?或者有什么方法可以使用 C API 以编程方式获取外部 IP 地址(不是通过访问某个网站)?

#include <stdio.h>
#include <sys/types.h>
#include <ifaddrs.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>

int main (int argc, const char * argv[]) {
    struct ifaddrs * ifAddrStruct=NULL;
    struct ifaddrs * ifa=NULL;
    void * tmpAddrPtr=NULL;

    getifaddrs(&ifAddrStruct);

    for (ifa = ifAddrStruct; ifa != NULL; ifa = ifa->ifa_next) {
        if (!ifa->ifa_addr) {
            continue;
        }
        if (ifa->ifa_addr->sa_family == AF_INET) {

            tmpAddrPtr=&((struct sockaddr_in *)ifa->ifa_addr)->sin_addr;
            char …
Run Code Online (Sandbox Code Playgroud)

c c++

2
推荐指数
1
解决办法
350
查看次数

openssl-encrypt,PHP 与命令行 - 如何使 IV 相同

我正在尝试使用 PHP 和 openssl 命令行加密数据,预期加密数据相同,但我得到不同的数据。

在 linux 上,这是我的 openssl -version

OpenSSL> version
OpenSSL 1.0.2k-fips  26 Jan 2017
Run Code Online (Sandbox Code Playgroud)

我试图传递 48 字节的数据,希望可以避免填充。但没有运气。我观察到 IV 是不同的,所以也尝试在 PHP 代码中使用 IV = 905E17D5F5E4939D0000000000000000。但是我收到警告 openssl_encrypt(): IV 传递的是 32 字节长,比所选密码预期的 16 字节长,截断

在命令行上尝试使用/不使用 -nosalt 选项。

<?php
// encrypt/decrypt string 
    $output = false;
    $encrypt_method = "AES-256-CBC";
    $key = '905e17d5f5e4939d48bd04ff47f9de906375b87b67068b2ce5d1bbbbc8dca291';
    $iv = '905e17d5f5e4939d';
    $string = "123456789ABCDEFG123456789ABCDEFG123456789ABCDEFG";

    $output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);  


echo $output;
?> 

nEUDtXM7OQt32YEx778BgqZfocXrNNA9AihkioWZo9ri9p11DtxUpTFO30AHUk41F9PUBLu6YlYu/mdLcOZ3Cg==
Run Code Online (Sandbox Code Playgroud)

linux命令行中的openssl:

echo "123456789ABCDEFG123456789ABCDEFG123456789ABCDEFG" |openssl enc -base64 -e -aes-256-cbc  -K 905e17d5f5e4939d48bd04ff47f9de906375b87b67068b2ce5d1bbbbc8dca291 -iv 905e17d5f5e4939d -nosalt …
Run Code Online (Sandbox Code Playgroud)

php command-line openssl

1
推荐指数
1
解决办法
163
查看次数

标签 统计

c ×1

c++ ×1

command-line ×1

openssl ×1

php ×1