1/* 2 * Copyright (c) 2024 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15#include "udmf_utils.h" 16#include <random> 17#include <sstream> 18 19namespace OHOS { 20namespace UDMF { 21namespace UTILS { 22static constexpr int ID_LEN = 32; 23static constexpr int MINIMUM = 48; 24static constexpr int MAXIMUM = 121; 25constexpr char SPECIAL = '^'; 26 27std::vector<std::string> StrSplit(const std::string &str, const std::string &delimiter) 28{ 29 std::vector<std::string> result; 30 size_t start = 0; 31 size_t end = str.find(delimiter); 32 while (end != std::string::npos) { 33 result.push_back(str.substr(start, end - start)); 34 start = end + delimiter.length(); 35 end = str.find(delimiter, start); 36 } 37 result.push_back(str.substr(start)); 38 return result; 39} 40 41std::vector<uint8_t> Random(int32_t len, int32_t minimum, int32_t maximum) 42{ 43 std::random_device randomDevice; 44 std::uniform_int_distribution<int> distribution(minimum, maximum); 45 std::vector<uint8_t> key(len); 46 for (int32_t i = 0; i < len; i++) { 47 key[i] = static_cast<uint8_t>(distribution(randomDevice)); 48 } 49 return key; 50} 51 52std::string GenerateId() 53{ 54 std::vector<uint8_t> randomDevices = Random(ID_LEN, MINIMUM, MAXIMUM); 55 std::stringstream idStr; 56 for (auto &randomDevice : randomDevices) { 57 auto asc = randomDevice; 58 asc = asc >= SPECIAL ? asc + 1 : asc; 59 idStr << static_cast<uint8_t>(asc); 60 } 61 return idStr.str(); 62} 63} // namespace UTILS 64} // namespace UDMF 65} // namespace OHOS